2011-08-20 72 views
2

好的我需要幫助這個人: 我需要一些東西向後匹配我認爲? 像「從'.no'向後匹配,直到第一空間」 我需要用鏈接替換一些文本。PHP的正則表達式來匹配一個可能包含不需要的HTML元素的字符串

見什麼IM的例子試圖下面來完成:

blabla hello www.test.no bla => blabla hello <a href="www.test.no">www.test.no</a> bla 

blabla hello test.no bla => blabla hello <a href="test.no">test.no</a> bla 

blabla hello http://www.test.no bla => blabla hello <a href="http://www.test.no">http://www.test.no</a> bla 

有人嗎?

+0

我不明白 - 你所期望的所有變化的輸出字符串看起來是一樣的輸入字符串。你想要做什麼樣的轉變?比賽的重點是什麼? –

+0

啊,這更有意義。編輯得很好。 –

回答

2

做第三次我還是不明白究竟需要,因爲你的例子不是很好的解釋,但在這裏有雲:

preg_replace('/[^ ]+\.no/', '<a href="$0">$0</a>', $your_text); 

示例代碼:http://ideone.com/H4iFD

編輯:你去那裏:

preg_replace("~(http://)?([^ ]+\.no)~", '<a href="http://$2">$2</a>', $your_text); 

示例代碼:http://ideone.com/3OLfI

+0

謝謝!只有在比賽中沒有'http://'的情況下,是否可以在替換中插入'http://'? –

+0

@Kristian看到我的編輯 –

+0

非常感謝!這意味着什麼? –

0

你沒有機會知道第二行是否是一個沒有嘗試ping的鏈接(例如curl)。

但是你可以用

preg_replace('~(http://.*?) ~', '<a href="$1">$1</a>', $text); 
0
$linked = preg_replace('%(?://)?([a-z0-9_\-.]+?\.no)%i', "<a href='http://$1'>$1</a>", $input); 
+0

這適用於除第三個之外的所有人。 將變成'http:// http:// www.test.no':> –

+0

你說得對。現在應該修復。 – hashchange

相關問題