2009-11-19 73 views
0

這個問題更多的是「什麼是最好/最簡單的方法」-type-of-question。我想從一個字符串,如PHP獲取URL的一部分到一個字符串

<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a> 

我想解析字符串,得到的只是它的部分"123456"剛搶的用戶ID。

我在想我可以爆炸字符串,但然後我會得到id=123456&blahblahblah,我想我必須以某種方式動態地從最後刪除垃圾。我認爲這可能與正則表達式,但我相當新的PHP,所以正則表達式略高於我。

回答

1

剛剛從id=抓住任何字符最多&"(其中id放在最後的查詢字符串的情況下,後者的賬戶)

$str = 'a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>'; 

preg_match('/id=([^&"]+)/', $str, $match); 
$id = $match[1]; 
0

正則表達式:

.*id[=]([0-9]*).*$ 
2

功能parse_str()將在這裏幫助

$str = "profile.php?rdc332738&amp;id=123456&amp;refid=22"; 
parse_str($str); 
echo $id; //123456 
echo $refid; //22 
+0

好像'parse_str()'不能處理(正確的)表格'&'但只理解單個'&',所以這段代碼不起作用。 – 2009-11-21 12:44:21

+0

此外,它只是工作,如果字符串包含**只有**查詢字符串,如果你包含'profile.php?'它會混淆並失去第一個參數。 – 2009-11-21 12:46:50

0

如果爆炸的字符串:

$string="<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>" 
$string_components=explode('&amp;','$string'); 

用戶ID部分(ID = 123456)將是:

$user_id_part=$string_components[1]; 

那麼你可以做一個字符串替換:

$user_id=str_replace('id=','$user_id_part'); 

而且你有用戶名