我使用此功能进行链接点击:问题的preg_replace
function clickable($text) {
$text = preg_replace("/(https?|ftps?|mailto):\/\/([-\w\p{L}\.]+)+(:\d+)?(\/([\w\p{L}#-;+-\/_\.]*(\?\S+)?)?)?/u", '<a target="_blank" href="$0">$0</a>', $text);
return $text;
}
它工作正常,但有一个小问题。如果$文本变量包含一个像这样的字符串:
一些文字
即链接,换行符(S)和一些文字,我得到不正确的结果。取而代之的是:
<a target="_blank" href="http://example.com">http://example.com</a>
就变成:
<a target="_blank" href="http://example.com<br">http://example.com</a>
/>
some text
这里是我在我的网站上显示的文字:
<?php echo clickable(nl2br($db['content'])); ?>
nl2br功能将所有换行符转换成HTML <br />
标签,但此函数认为它应该保持这个标签在url ...
希望我很清楚:)
任何想法?
你有一个字符类'[# - + - \\] ' - 这是故意的吗?首先,'[# - ;]'包含'[+ - \\]',这很奇怪。 – Kobi 2010-08-22 11:33:31