使用PHP& amp;将所有html链接转换为另一个URL正则表达式

时间:2012-04-02 12:53:29

标签: php preg-replace

我正在尝试获取字符串中的所有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);

1 个答案:

答案 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);