2012-04-26 75 views
0

我正在開發一個簡單的cms,並且在某些情況下我想要在數據庫中存儲一段可能包含一些鏈接但我不想在數據庫中存儲html代碼的段落,我想要它如下:preg替換以生成鏈接

一些文字,一些文字||關鍵字|| http://an-external-site.com/keyword ||一些文字和一些文字

,然後用PHP來產生一個像這樣的鏈接:

一些文字,一些文字< A HREF =「http://an-external-site.com/keyword」 >關鍵詞</a >一些文字和一些文字

那麼,該怎麼做呢?用了preg_replace()例如

,是有辦法有URL指向使用預先定義的變量我的網站內的內部頁面,例如

一些文字,一些文字||關鍵字|| MS /關鍵字||一些文字和一些文字

這將是:

一些文本,一些文本< A HREF = 「http://mysite.com/keyword」 >關鍵字< /一個>一些文本和一些文字

其中MS是指我的網站,例如http://mysite.com/

所以這裏的PHP函數獲取模式,然後決定是否簡單地使用完整的URL如示例1或預先定義的變量,它等於代替MS http://mysite.com/

謝謝。

回答

1

我會推薦使用一些像bbcode這樣的類來直接獲取項目中的非html代碼。

如果你仍然想使用正則表達式,你可以使用這樣的事情:

$pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi'; 
while (preg_match($pattern, $row, $txt)) 
{ 
    /* $txt[3] holds the link. */ 
    echo $txt[3]."\n"; 

    $row = $txt[1]." here was a link ".$txt[6]; 
} 

/* print $row */ 
print "<br>".nl2br($row); 
+0

謝謝你的想法,但它應該如何,你沒有提到的段落中使用的模式,其中的功能應該找到工作像|| ... || ... ||一樣 – medk 2012-04-26 13:28:13