2012-02-12 1 views
1

HTMLエンティティを削除するためのpreg_replaceが機能しないのはなぜですか?なぜこの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バージョン:5.3.6-13 Ubuntuの3.5

正規表現ライブラリ:バンドルライブラリが

+0

http://regexadvice.com/forums/thread/17340.aspx – hackartist

+0

期待どおりに動作します。あなたの入力とは何か違うことがありますが、それを間違って適用しているかもしれません。 – mario

+0

私はそれをテストする方法を追加しました。それは私のためには機能しません。 –

答えて

1

あなたは#

が欠落しているを使用してみてください

あなたのpreg_replaceコールでは、この正規表現にする必要があります:

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

ありがとう!私はそれがこのようなものであることを知っていた。私はまた置く? #のように一致するようにした後< –

+0

ようこそ。はい、plsは '<' '>'などに '?'を追加します – anubhava

0

を有効にglobal modifier(e)の

+1

私はそれがうまくいかないことを試みました。 –

関連する問題