我使用此功能進行鏈接點擊:問題的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