我正在尝试获取字符串中的所有html链接并使用preg_replace将其替换为另一个链接(用于链接跟踪等)
它适用于http://www.facebook.com之类的链接,但不适用于域扩展后有任何额外文本的链接 所以第一个网址没问题,但后者不起作用 - 任何人都可以建议我如何改变我的表达方式以允许这样的BOTH链接起作用。
http://www.facebook.com
http://www.facebook.com/profile/1242435
$message = preg_replace("/<a([^>]+)href=\"http\:\/\/([a-zA-Z0-9\-]+\.[a-zA-Z0-9]+\.[a-zA-Z]{2,3}(\/*)?)/", "<a$1href=\"http://www.site.com/system/link_tracker.php?URL=$2&ID={$ID}\"", $message);
答案 0 :(得分:3)
$message = preg_replace("/<a([^>]+)href=\"http\:\/\/([a-zA-Z0-9\-]+\.[a-zA-Z0-9]+\.[a-zA-Z]{2,3}(\/[^\"]*)?)/", "<a$1href=\"http://www.site.com/system/link_tracker.php?URL=$2&ID={$ID}\"", $message);
喜欢这个? 顺便说一下,域区域可以超过3个符号。你可以用flag / i
来缩短它$message = preg_replace("/<a([^>]+)href=\"http\:\/\/([a-z\d\-]+\.[a-z\d]+\.[a-z]{2,5}(\/[^\"]*)?)/i", "<a$1href=\"http://www.site.com/system/link_tracker.php?URL=$2&ID={$ID}\"", $message);