2009-11-19 68 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'); 

而且你有用户名