我有以下XML:
<id>tag:search.twitter.com,2005:22204349686</id>
如何将第二个冒号后的所有内容写入变量?
E.g。 22204349686
答案 0 :(得分:3)
if(preg_match('#<id>.*?:.*?:(.*?)</id>#',$input,$m)) {
$num = $m[1];
}
答案 1 :(得分:2)
如果您已在变量$str
中使用了代码内容,则可以使用explode
从第二个:
获取所有内容:
list(,,$rest) = explode(':', $str, 3);
答案 2 :(得分:1)
$var = preg_replace('/^([^:]+:){2}/', '', 'tag:search.twitter.com,2005:22204349686');
我假设你已经有了没有<id>
位的字符串。
否则,对于SimpleXML:
$var = preg_replace('/^([^:]+:){2}/', '', "{$yourXml->id}");
答案 3 :(得分: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;
}
答案 4 :(得分:0)
使用explode
和strip_tags
:
list(,,$id) = explode( ':', strip_tags( $input ), 3 );
答案 5 :(得分: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);
答案 6 :(得分: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
部分会删除不是数字的所有内容。
答案 7 :(得分:-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..
}