我有以下XML:PHP從字符串中提取文本 - 修剪?
<id>tag:search.twitter.com,2005:22204349686</id>
我怎麼能寫第二個冒號的變量之後的一切嗎?
E.g. 22204349686
我有以下XML:PHP從字符串中提取文本 - 修剪?
<id>tag:search.twitter.com,2005:22204349686</id>
我怎麼能寫第二個冒號的變量之後的一切嗎?
E.g. 22204349686
$var = preg_replace('/^([^:]+:){2}/', '', 'tag:search.twitter.com,2005:22204349686');
我假設你已經有沒有<id>
位的字符串。
否則,SimpleXML的: $var = preg_replace('/^([^:]+:){2}/', '', "{$yourXml->id}");
if(preg_match('#<id>.*?:.*?:(.*?)</id>#',$input,$m)) {
$num = $m[1];
}
當你已經只是一個變量$str
標籤的內容,你可以使用explode
對從第二:
得到的一切:
list(,,$rest) = explode(':', $str, 3);
我假設你有一個變量($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;
}
downvote的原因是什麼? – 2010-08-26 20:09:50
使用explode
和strip_tags
:
list(,,$id) = explode(':', strip_tags($input), 3);
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..
}
首先,與解析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);
正則表達式似乎不適合這樣一個簡單的匹配。
如果你沒有串周圍的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
部分剝去一切不是數字的東西。
正確的答案,因爲你讀了我的腦海! – CLiown 2010-08-26 20:25:52