2010-06-28 176 views
0

我想从URL字符串中获取ID。从字符串中获取ID。正则表达式问题

我用下面的代码尝试: -

FROM:

<url>http://www.monkeys.com/monkey.php?id=24</url> 

我想 '24': -

$ID = preg_replace($url, '/^<url>.*\?id=(.*)<\/url>$/', '\1'); 

任何帮助将不胜感激 - 我确定这是一个常见问题,但我发现正则表达式令人困惑。

回答

3

正则表达式是错误的工作工具。使用

例子:

$url = "http://www.monkeys.com/monkey.php?id=24"; 
parse_str(parse_url($url, PHP_URL_QUERY), $parts); 
var_dump($parts); // 24 

获取URL出e。<URL> e lement应该是微不足道的。 DOM是你的朋友。请参阅处理Reading XML with PHP的各种其他问题以及此文章为什么should not use Regex for parsing HTML

+0

出于某种原因后,我没有得到它... $ URL = HTTP:// www.test.com/tester.php?id=212 parse_str($ url,$ parts); echo $ parts ['id'] =无。 – waxical 2010-06-28 11:10:45

+1

现在有效,没有正确地遵循你的例子。 :/谢谢 – waxical 2010-06-28 11:18:40

0

你可以使用这个表达式:

/^[^?]+\?id=(.*).*$/ 
0

如果ID只有数字:

/\?id=(\d+)/ 

如果没有什么ID

/\?id=(.*)/ 
+0

如果在它之后还有另外一个参数会怎么样? – Wim 2010-06-28 10:00:26

+0

@Wim:取决于OP的字符串,它可能是 /\?id=(.*?)&?/ – Toto 2010-06-28 11:23:59

+0

是的,'/ \?id =(。*?)&?/'将是最通用的解。 – Wim 2010-06-28 13:56:27