2010-08-25 35 views
0

節省保存到數據庫之前變更之前的HTML我需要正則表達式:在數據庫


  1. 刪除所有標籤
  2. 刪除所有多於一個空格字符
  3. 刪除所有超過一個換行符

它我這樣做

  1. $content = preg_replace('/<[^>]+>/', "", $content);
  2. $content = preg_replace('/\n/', "NewLine", $content);it's for not to lose them when deleting more then one white space character

    $content = preg_replace('/(\&nbsp\;){1,}/', " ", $content);

    $content = preg_replace('/[\s]{2,}/', " ", $content);

  3. 和finnaly我必須先刪除一個以上的 「換行」 字樣。

第一個兩分後,我得到的文本在這樣的格式 -

NewLineWordOfText 
NewLine 
NewLine 
NewLine NewLine WordOfText &quot;WordOfText WordOfText&quot; WordOfText NewLine&quot;WordOfText 
... 

如何從這些內容telede更多然後一個換行符?

感謝

+0

刪除多個空白(除換行符外),並刪除多個換行符。爲什麼不刪除多個空白,包括換行符? – Sjoerd 2010-08-25 17:47:30

+0

我需要保存換行符!讓我們假設我有'\ n \ s'。在這種情況下,我只會得到一個'\ s',但我也需要保存'\ n'。 – Simon 2010-08-25 17:49:24

+0

'strip_tags()'是一種更快捷,更有效的方法來移除HTML – Cfreak 2010-08-25 17:52:23

回答

3

首先,雖然HTML is not regular,因此這是一個壞主意,使用正則表達式來解析它,PHP有一個函數,將刪除標籤爲你:strip_tags

要擠壓的空間,而保留換行符:

$content = preg_replace('/[^\n\S]{2,}/', " ", $content); 
$content = preg_replace('/\n{2,}/', "\n", $content); 

第一行會擠壓所有空白以外\n[^\n\S]意味着不\n和所有字符不是非空白字符)合併爲一個空格。第二個將把多個換行符壓縮成一個換行符。

+0

+1。這個問題應該是需要閱讀的用戶寫他們的第一個問題標記爲「HTML」。 – 2010-08-25 17:55:12

+1

+1表示strip_tags。 HTML不規則,試圖解析它是一件痛苦的事情。 – 2010-08-25 17:58:31

0

爲什麼你不使用nl2br()然後preg_replace所有<br /><br /> s只是<br />然後所有的<br /> s回到\ n?