使用PHP链接URL,修剪输出的URL长度

时间:2017-09-29 14:54:50

标签: php regex

我正在尝试自动将文本格式化为PHP中的链接,但要将长网址修剪为最大字符数限制。并删除' http(s)'来自输出的文字。

blah blah http://example.com/some-long-slug-goes-here foo

应转换为:

blah blah <a href="http://example.com/some-long-slug-goes-here">example.com/some-long-sl...</a> foo blah blah example.com/some-long-sl... foo

在此处找到preg_replace解决方案:How do I linkify urls in a string with php?但我无法根据自己的需要对其进行编辑。

$string = preg_replace(
  "~[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]~",
  "<a href=\"\\0\">\\0</a>", 
  $string
);

1 个答案:

答案 0 :(得分:2)

在协议之后创建一个捕获组:

$string = preg_replace(
  "~[[:alpha:]]+://([^<>[:space:]]+[[:alnum:]/])~",
  "<a href=\"\\0\">\\1</a>", 
  $string
);

然后\1将是没有协议的URL。对于文本限制,我建议使用CSS Setting a max character length in css