我正在寫一個BBCode轉換函數,它將純文本轉換爲超鏈接,但我注意到包含格式良好的鏈接的內容也被錯誤地轉換而不是被忽略。下面的代碼塊的輸出給出了兩個超鏈接,一個正確,另一個錯誤。如何避免重新轉換已經超鏈接的文本。我的PHP文本鏈接轉換函數的問題
<?php
function make_links_clickable($text){
$prepared_str = str_replace('www.','http://www.',$text);
$strip_double_str = str_replace('http://http://','http://',$prepared_str);
return preg_replace('!(((f|ht)tp(s)?://)[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;//=]+)!i', '<a href="$1">$1</a>', $strip_double_str); }
$strbody = "He was also the Head of Department, Environmental Health
in the School of Health Technology, Orji River,
Enugu, and member of several professional bodies. <br/>
Source: <br/>
<a href='http://vanguardngr.com/2015/09'>This is Already hyperlinked</a> <br>
http://vanguardngr.com/2015/09/buhari-appoints-abonyi-as-registrar-of-ehorecon/";
echo make_links_clickable($strbody);
?>
現在就測試你的腳本,但它仍然沒有讓它超鏈接已經形成。它扭曲了它使得格式不正確。 str中有兩個鏈接,一個已經格式化爲超鏈接,另一個鏈接文本應該轉換爲超鏈接。 您的函數對純文本起作用,但對於已經超鏈接的文本不起作用。 –
我用代碼更新了答案......我測試了輸出......現在按照它。 如果它給出正確的輸出。那麼請接受答案 –
哪個答案? 我試過兩種方法,但它仍然扭曲已經超鏈接的文本。嘗試使用$ strbody的值運行你的函數。 您會注意到鏈接斷開。只有第二個鏈接有效。 –