【发布时间】:2011-09-17 15:18:42
【问题描述】:
我知道我已经在很多地方看到过这种做法,但我需要一些与常规不同的东西。可悲的是,当我在任何地方搜索它时,它都会被埋在关于将链接制作成 html 标记链接的帖子中。我希望 PHP 函数从链接中删除“http://”和“https://”以及 .* 之后的任何内容,所以基本上我正在寻找的是将 A 变成 B。
A: http://www.youtube.com/watch?v=spsnQWtsUFM
B: <a href="http://www.youtube.com/watch?v=spsnQWtsUFM">www.youtube.com</a>
如果有帮助,这是我当前的 PHP 正则表达式替换函数。
ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" class=\"bwl\" target=\"_new\">\\0</a>", htmlspecialchars($body, ENT_QUOTES)));
说我完全不了解正则表达式可能也会有所帮助。谢谢!
编辑:当我输入像这样blahblah @987654321@ blah 这样的评论时,我得到像这样<a class="bwl" href="blahblah @987654322@ blah">www.facebook.com</a> 这样的html,它根本不起作用,因为它正在使用链接周围的文本。但是,如果有人只使用链接,它会很好用。这是我将功能更改为此
preg_replace("#^(.*)//(.*)/(.*)$#",'<a class="bwl" href="\0">\2</a>', htmlspecialchars($body, ENT_QUOTES));
【问题讨论】:
-
总是更喜欢
preg*而不是ereg*函数,因为ereg*函数速度慢且已弃用。
标签: php regex hyperlink replace href