2010-08-15 54 views
3

我有一個textarea表單字段,用戶將URL放在一個新行中。是否有可能將這個textarea字段中的每行與< li>標籤包裝起來?如何使用li標籤在textarea中包裝每個新行? PHP

所以我需要從外地輸出是這樣的:

<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 

有誰知道是誰用PHP來實現這一目標嗎?

回答

11
$textareaData = '<li>'.str_replace("\n","</li>\n<li>",trim($textareaData,"\n")).'</li>'; 

編輯

修改擺脫所有的空行,以及:

$textareaData = '<li>'.str_replace(array("\r","\n\n","\n"),array('',"\n","</li>\n<li>"),trim($textareaData,"\n\r")).'</li>'; 
+0

我的想法正好 – Chris 2010-08-15 13:31:09

+0

感謝馬克這個偉大工程。如果我可以以某種方式省略空行,它將是完美的! – Brigante 2010-08-15 15:29:44

+0

謝謝!完美的作品。非常感謝!! – Brigante 2010-08-15 15:53:23

0

使用正則表達式,你可以檢查非空行作爲測試的一部分:

$li_text = preg_replace('/^(.+)$/', '<li>$1</li>', $_POST['textarea']); 

這樣,如果用戶有一個額外的新在他們的輸入結束時(或在裏面的任何地方),你不會得到額外的空列表項。

+0

這將是偉大的,但不能得到它的工作。 它不會將li標籤放在來自textarea但硬編碼數據的任何東西上。 順便說一句,我得到的內容來自textarea作爲一個變量,如果這有所作爲。 – Brigante 2010-08-15 15:22:19

+1

更新:如果文本區域中只有1行文本,它工作正常。如果有超過1行,它不會添加任何li標籤。 – Brigante 2010-08-15 15:26:30

+0

編輯添加多行正則表達式選項。 – Mazuhl 2016-03-17 19:50:53

1

又是怎麼回事像這樣

echo preg_replace('/^(.+)(\s*)$/m', '<li>$1</li>', $text); 

輸出將被這樣的事情(不漂亮,但有用的):

<li>dsadsa 
</li> 
<li>dsdsa 
</li> 
<li>dsadsad 
</li> 
<li>dsadsadsad 
</li> 
<li>vcxvxcvxvcxvcx 
</li> 
<li>fdsfdsfdsfs 
</li> 
相關問題