【问题标题】:Preg_replace for url and linksPreg_replace 用于 url 和链接
【发布时间】:2011-12-22 17:41:36
【问题描述】:

现在 我正在使用

$content = preg_replace('@(https?://([-\w\.]+)+(:\d+)?((/[\w/_\.%\-+~]*)?(\?\S+)?)?)@', '<a href="$1" target="_blank">$1</a>', $content);

用于用链接替换 ​​url,但它不适用于像 # 和许多其他符号这样的符号

如果内容看起来像这样,我也希望这样做

<a href="http://www.abc.com/">http://www.abc.com/</a>

然后 preg_replace 跳过这个,否则它会重复相同并产生错误的结果。

【问题讨论】:

  • 这个问题被问了很多。尝试搜索:“php linkify url”
  • 或者如果你很绝望:txt2re.com

标签: php regex preg-replace


【解决方案1】:

来自 Kohana 的文本帮助器类为此提供了一个功能,这可能是一个很好的起点:https://github.com/kohana/core/blob/3.2/master/classes/kohana/text.php#L362

【讨论】:

    【解决方案2】:

    为什么不直接查找以 http:// 或 https:// 开头的任何内容,直到出现任何空白字符?

    https?://[^\s]+
    

    这显然很宽容,唯一的问题是您可能会得到一些误报。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多