从字符串中提取PHP文本 - 去除空格?

4

I have the following XML:

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

如何将第二个冒号后的所有内容写入变量?
例如:22204349686
8个回答

3
if(preg_match('#<id>.*?:.*?:(.*?)</id>#',$input,$m)) {
 $num = $m[1];
}

2

如果你已经把标签内容存储在变量 $str 中,你可以使用 explode 函数获取从第二个冒号 : 开始的所有内容:

list(,,$rest) = explode(':', $str, 3);

1

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

我假设您已经有了不带<id>位的字符串。

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


0

我假设你已经在一个变量($str)中存储了id标签的内容。

// 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;
}

0
首先,使用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);

0

正则表达式对于这样简单的匹配来说似乎不太合适。

如果您在字符串周围没有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 部分则剥离除了数字以外的所有内容。


0
使用 explodestrip_tags:
list(,,$id) = explode( ':', strip_tags( $input ), 3 );

-2
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..
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接