2012-02-12 39 views
1

爲什麼preg_replace刪除HTML實體無效?爲什麼此preg_replace不起作用?刪除HTML實體

// Remove all HTML entities 
$text = preg_replace('/&[A-Za-z0-9]+?;/',' ', $text); 

我只是試圖取代所有HTML實體,如(& ###;,<,和等)的空間,但我似乎失去了一些東西,因爲它不是取代他們,我現在完全混淆了。


測試用例

代碼:

// Remove all HTML entities 
$title="&#9829;&#9829;&#9829; I like cats &#9829;&#9829;&#9829;"; 
echo "BEFORE : ".$title."\n"; 
$title2 = preg_replace('/&[A-Za-z0-9]+?;/e',' ', $title); 
echo "AFTER : ".$title2."\n"; 

輸出:

BEFORE : ♥♥♥ I like cats ♥♥♥ 
AFTER : ♥♥♥ I like cats ♥♥♥ 

PHP的信息:

PHP版本:Ubuntu的5.3.6-13 3.5

正則表達式庫:捆綁庫啓用

+0

http://regexadvice.com/forums/thread/17340.aspx – hackartist 2012-02-12 19:24:59

+0

按預期工作。您的輸入有些不同,或者您錯誤地應用了它。 – mario 2012-02-12 19:31:31

+0

我加了我如何測試它,它不適合我。 – 2012-02-12 19:42:37

回答

1

你錯過#

它應該是這個正則表達式代替您的preg_replace調用:

/&#[a-z\d]+;/i 
+0

謝謝!我知道這是這樣的。我也把一個?之後#匹配像< – 2012-02-12 19:49:46

+0

不客氣。是的,請爲'<''>'等加上'?'。 – anubhava 2012-02-12 19:53:31

0

嘗試使用global modifier(E)

+1

我試過它沒有工作。 – 2012-02-12 19:29:15

相關問題