URL中的preg_match ID

时间:2011-07-14 08:22:43

标签: php url parameters preg-replace

编辑: 对不起,我的第一篇文章并不是很清楚。好吧,我有文本存储在数据库中,我喜欢处理它,并寻找我网站上的产品的任何链接,并将它们变成一个奇特的链接。下面是2个链接和我当前的exp。第二个链接(Link2)按预期工作并将值21传递给detailsLink()我的问题在于Link1它将值2传递给detailsLink()而不是21。我想完全忽略url,因为detailsLink()会重新创建带有产品评级/ cat等的链接。它也应该适用于http或https链接。

Link1:http://192.168.2.22/dev/details.php?id=21 Link2:http://192.168.2.22/dev/details.php?id=21&module=info#Desc

$s = preg_replace("%(?<![=\]\'\"\w])https?://[^<>\s\'\",]*$ADDRESS\/details\.php\?id=([0-9]+)[^<>\s\'\",]+%ie", "detailsLink(\\1)", $s);

$ ADDRESS的值是192.168.2.22/dev

2 个答案:

答案 0 :(得分:5)

无需重新发明轮子:

$url="http://192.168.2.22/dev/details.php?id=21&module=info#Desc";

parse_str(parse_url($url,PHP_URL_QUERY), $arr);

print_r($arr);

给你:

Array
(
    [id] => 21
    [module] => info
)

parse_str() parse_url()

答案 1 :(得分:1)

我不明白。你为什么不用$_GET['id']

编辑:没关系。我从来不知道那些功能! (parse_url,即)