此代码将任何网址转换为可点击链接:
$str = preg_replace('/(http[s]?:\/\/[^\s]*)/i', '<a href="$1">$1</a>', $str);
当url以[character?开头]时如何使其不转换?像这样:
答案 0 :(得分:5)
$str = preg_replace('/(?<!\[)(http[s]?:\/\/[^\s]*)/i', '<a href="$1">$1</a>', $str);
^^^^^^^
然后,http...
前面的[
子字符串将不匹配。
您可以将模式增强为
preg_replace('/(?<!\[)https?:\/\/\S*/i', '<a href="$0">$0</a>', $str);
即:删除(
和)
(捕获组),并在替换模式中将$1
的后向引脚替换为$0
,并注意[^\s]
1}} = \S
,但更短。此外,[s]?
= s?
。