代码之家  ›  专栏  ›  技术社区  ›  CLiown

PHP从字符串中提取文本-修剪?

  •  4
  • CLiown  · 技术社区  · 14 年前

    <id>tag:search.twitter.com,2005:22204349686</id>
    

    如何将第二个冒号之后的所有内容写入变量?

    22204349686

    8 回复  |  直到 14 年前
        1
  •  1
  •   janmoesen    14 年前

    $var = preg_replace('/^([^:]+:){2}/', '', 'tag:search.twitter.com,2005:22204349686');

    我想你已经有了没有 <id> 位。

    $var = preg_replace('/^([^:]+:){2}/', '', "{$yourXml->id}");

        2
  •  3
  •   codaddict    14 年前
    if(preg_match('#<id>.*?:.*?:(.*?)</id>#',$input,$m)) {
     $num = $m[1];
    }
    
        3
  •  2
  •   Gumbo    14 年前

    当变量中只有标记内容时 $str ,你可以用 explode 从第二层得到一切 : 日期:

    list(,,$rest) = explode(':', $str, 3);
    
        4
  •  0
  •   Frank Farmer    14 年前

    首先,用XML解析器解析XML。查找相关节点的文本内容( tag:search.twitter.com,2005:22204349686 ). 然后,编写一个相关的正则表达式,例如。

    <?php
    $str = 'tag:search.twitter.com,2005:22204349686';
    preg_match('#^([^:]+):([^,]+),([0-9]+):([0-9]+)#', $str, $matches);
    var_dump($matches);
    
        5
  •  0
  •   MartyIX    14 年前

    我想你有一个变量( $str 身份证件 标签。

    // get last occurence of colon
    $pos = strrpos($str, ":");
    
    if ($pos !== false) {
      // get substring of $str from position $pos to the end of $str 
      $result = substr($str, $pos); 
    } else {
      $result = null;
    }
    
        6
  •  0
  •   Gordon Haim Evgi    14 年前

    正则表达式在我看来不适合这样简单的匹配。

    如果字符串周围没有ID标记,您可以简单地这样做

    echo trim(strrchr($xml, ':'), ':');
    

    $xml = '<id>tag:search.twitter.com,2005:22204349686</id>';
    echo filter_var(strrchr($xml, ':'), FILTER_SANITIZE_NUMBER_INT);
    // 22204349686
    

    这个 strrchr 零件退货 :22204349686</id> 以及 filter_var 部分剥离所有不是数字的东西。

        7
  •  0
  •   Tim Cooper    13 年前

    explode strip_tags :

    list(,,$id) = explode( ':', strip_tags( $input ), 3 );
    
        8
  •  -2
  •   vlad b.    14 年前
    function between($t1,$t2,$page) {
        $p1=stripos($page,$t1);
        if($p1!==false) {
            $p2=stripos($page,$t2,$p1+strlen($t1));
        } else {
            return false;
        }
        return substr($page,$p1+strlen($t1),$p2-$p1-strlen($t1));
    }
    
    $x='<id>tag:search.twitter.com,2005:22204349686</id>';
    $text=between(',','<',$x);
    if($text!==false) {
       //got some text..
    }