【问题标题】:Simplest way to convert all html links in a string using PHP使用 PHP 转换字符串中所有 html 链接的最简单方法
【发布时间】:2012-04-16 00:45:07
【问题描述】:

我正在尝试转换包含 html 文本的文本块 - 我想查找所有 http 链接并将它们转换为链接跟踪目的。

因此,例如字符串中的任何类似内容都将转换为后者

<a href="http://www.google.com">Some Link</a>

<a href="http://www.mysite.com/tracking.php?url=www.google.com">Some Link</a>

考虑到原始字符串将包含各种 html、图像等,任何人都可以如何做到这一点。

【问题讨论】:

  • 对不起,我误解了问题

标签: php regex string hyperlink preg-replace


【解决方案1】:

使用此正则表达式:(已更新)

<?php

$str = '<h1>Page Title</h1><a href="http://www.google.com/">Google</a>';
$text = preg_replace("/href=\"http\:\/\/([a-zA-Z0-9\-]+\.[a-zA-Z0-9]+\.[a-zA-Z]{2,3}(\/*)?)/","href=\"http://www.mysite.com/tracking.php?url=$1\"",$str);

echo $text;

?>

输出:

<h1>Page Title</h1><a href="http://www.mysite.com/tracking.php?url=www.google.com/"">Google</a>

【讨论】:

  • 我收到以下错误:警告:preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in...
  • 我的代码在下面..(格式似乎不正确??) $str = '

    页面标题

    google.com">Google</a>'; $text = preg_replace('href=\"http\://([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?) \"', 'href=\"YOUR_TRACKING_URL=$1\"', $str); echo $text;
  • 只是一个快速的.. 我将如何修改 preg_replace 以仅替换在 href 中没有“客户”的 href? (但也要保持现有规则)
  • @Gaz 你能给我一个包含“客户”的 URL 的例子吗? (我的意思是你显然对排除clients.com不感兴趣,但类似于http://www.yourdomain.com/clients/some_page.php,对吧?这就是我想要让它更具体的东西):-)
【解决方案2】:
$str = '<h1>Page Title</h1><a href="http://www.google.com">Google</a>';
$text = preg_replace('href=\"http\://([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?)\"', 'href=\"YOUR_TRACKING_URL=$1\"', $str);
echo $text;

警告:preg_replace() [function.preg-replace]:/home/.. 中的分隔符不能是字母数字或反斜杠。 (抱歉重复)

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2011-01-24
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多