2010-08-26 29 views

回答

1

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

我假設你已經有沒有<id>位的字符串。

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

+0

正確的答案,因爲你讀了我的腦海! – CLiown 2010-08-26 20:25:52

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

當你已經只是一個變量$str標籤的內容,你可以使用explode對從第二:得到的一切:

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

我假設你有一個變量($strID標籤的內容。

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

downvote的原因是什麼? – 2010-08-26 20:09:50

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.. 
} 
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部分剝去一切不是數字的東西。