【发布时间】:2011-07-14 08:22:42
【问题描述】:
编辑: 抱歉,我的第一篇文章不太清楚。好的,我将文本存储在数据库中,我想对其进行处理并在我的网站上查找指向产品的任何链接,并将它们变成一个精美的链接。以下是 2 个链接和我当前的 exp。第二个链接 (Link2) 按预期工作并将值 21 传递给 detailsLink() 我的问题在于 Link1 它将 2 的值传递给 detailsLink() 而不是 21 如预期的那样。我想完全忽略 url,因为 detailsLink() 会重新创建带有产品评级/cat 等的链接。它也应该适用于 http 或 https 链接。
链接1:http://192.168.2.22/dev/details.php?id=21 链接2: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
【问题讨论】:
-
请不要使用 e(val) 修饰符,而是使用
preg_replace_callback。 -
请不要用正则表达式重新发明轮子。解析 URL 的查询信息部分的函数已经在 PHP 中可用。见
parse_url。
标签: php url parameters preg-replace