2012-10-19 71 views
0

可能重複:
How to parse and process HTML with PHP?轉換混合HTML文本與PHP

有人可以幫我找到一個解決方案來分析其中有HTML和普通文本的文本。例如

This is my awesome <b>text</b>. Now <a href="http://google.com">starts</a> a new line... 

<img src="http://example.com/image.png"/><br> 
<br> 
I push news to http://twitter.com . 

這應成爲

This is my awesome <b>text</b>. Now <a href="http://google.com">starts</a> a new line...<br> 
<br> 
<img src="http://example.com/image.png"/><br> 
<br> 
I push news to <a href="http://twitter.com">twitter.com</a> . 

我搜索主要針對一個神奇的正則表達式替換功能......此刻,我做

$text = preg_replace("@(src|href)=\"https?://@i",'\\1="', $description); 
$text = nl2br(preg_replace("@(((f|ht)tp:\/\/)[^\"\'\>\s]+)@",'<a href="\\1" target="_blank">\\1</a>', $text)); 
+2

閱讀此線程:http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php –

+0

我不想從中提取信息。我想將一些非HTML代碼的文本轉換爲HTML。例如,鏈接應該轉換爲可點擊鏈接,但是當它們已經在標籤中時,它應該被忽略......更改標題 – Laoneo

+0

您需要先對html進行解析,然後才能對其進行修改。 –

回答

3

nl2br的伎倆很好。

file_get_contents('filename.html'); 
nl2br($text); 

它是專門爲您的需要而設計的。

如果您擔心雙重\n或已經存在<br />元素,您必須爲輸入文本(如果您有控制權)或預處理設計方案。

也許與\n替換所有\n\n\n和所有<br />\n應用nl2br之前。

+1

+1爲我展示了一個新功能;) – Peon

+0

問題是當我寫 LSDF
\ n 文本 它將成爲 LSDF

文本 – Laoneo

+1

不要忘了聯繫,解決方案已經在這裏:http://stackoverflow.com/questions/1188129/replace-urls-in -text-with-html-links/ – NilsB

0

你可以試試這個

$text = your source text 
$text = preg_replace(
    array('/\n/m', '/\<br\>\<br\>/m' '/\<br\>$/'), 
    array("\n<br>", "<br>", ''), 
    $text 
); 

再見

+0

使用正則表達式來替換簡單的字符串替換能夠做的事情是非常浪費的資源。 –

+0

是真實的,雖然它在很大程度上取決於所做的轉換。在任何情況下,我都會採用這種方法,因爲我認爲,所提供的例子看起來是隨機的,至少對我來說,可能有更多的信息需要分析,或者在他嘗試給出答案後出現複雜的案例,那麼preg可能會提供更多的靈活性。但是,當然,所有這些過程都在我的腦海中,考慮到我做了什麼,我可能完全錯誤。 – PatomaS

+0

關於編輯,我以我的方式發佈了它,因爲我認爲它更容易理解。不過,你的編輯還是可以的 – PatomaS