【问题标题】:Convert all html links to another URL with PHP & Regex使用 PHP 和 Regex 将所有 html 链接转换为另一个 URL
【发布时间】:2016-11-11 21:23:00
【问题描述】:

我正在尝试获取字符串中的所有 html 链接并使用 preg_replace 将它们替换为另一个链接(用于链接跟踪等)

它适用于http://www.facebook.com 等链接,但不适用于在域扩展后有任何额外文本的链接 所以第一个 URL 可以,但后者不起作用 - 任何人都可以建议我如何改变我的表达方式以允许这样的两个链接都工作。

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

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:
    $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);
    

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 2011-01-30
      • 2015-04-22
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多