PHP正则表达式多个链接段落仅显示域

时间:2017-09-17 09:47:54

标签: php regex

以下代码将段落中的每个链接更改为可点击的 [外部链接]

我必须运行两次以捕获HTTP和HTTPS。

1)有没有办法把它变成一行?

2)我如何更改它而不是 [外部链接] 它只显示域名?与 google.com 类似,但实际链接可能会更长。我使用 [外部链接] 的原因是缩短较长的网址。

//Regular HTTP links
$text = preg_replace('/(^|[^"])(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="\\2" target="_blank">[external link]</a>', $text);
//HTTPS links
$text = preg_replace('/(^|[^"])(((f|ht){1}tps:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="\\2" target="_blank">[external link]</a>', $text);

1 个答案:

答案 0 :(得分:0)

你可以加一个?制作&#34; s&#34;可选的。

https://regex101.com/r/loRV7S/1/

$text = preg_replace('/(^|[^"])(((f|ht){1}tps?:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="\\2" target="_blank">[external link]</a>', $text);