2011-12-16 29 views
1

$ reply = "blah blah blah>< blah blah blah"; (> <は、韓国で人気の顔文字である)PHPを使用しているときに "<"の後の文字列strip_tags function

しかし、私は$応答ですべてのHTMLおよびPHPタグを取り除くために、「strip_tags」を使用する場合、「<」の後に、すべての文字が削除されます。

私はstrip_tagsが混在していると思います。

この問題を解決するソリューションはありますか?

+1

いいえ、strip_tagsの使用を破棄しない限り、 – ajreal

+0

ohを参照してください。そうすれば、strip_tagsではなくstr_replacceを使用する必要があります。ありがとう! –

+0

@MintakSon:おそらく、あなたは 'htmlspecialchars'を使うべきでしょう。 – Jon

答えて

1

strip_tags()を呼び出すと、文字列をHTMLとして扱います。したがって、strip_tags()を使用する前に、これらのエンティティを&lt;および&gt;としてエンコードする必要があります。そうでない場合は、HTMLタグの開始および終了として扱われます。

エンティティをエンコードする必要があります。 strip_tags()を使用すると、安全になります。

+0

+1ですが、 'strip_tags'が' htmlspecialchars'を使って処理された後に何が残るのでしょうか? – Jon

+0

@Jon Geez、今私は愚かだと感じる;) – alex

+0

ああ!それは非常に良い機能です!あなたの助言に感謝します。良い一日を持って、アレックス:) –

1

興味深い。私個人的に許容される部品をエンティティエンコードするでしょう、そして、(ストリップタグやにhtmlentitiesを実行します)その後...もちろん

<?php 
// Initial user-input 
$reply = "blah blah blah >< blah blah blah"; 

// Allow the emoticon you mentioned 
$reply = str_replace('><', '&gt;&lt;', $reply); 

// Then strip tags 
$reply = strip_tags($reply); 

、これはあなただけ($応答)をhtmlentites場合は、すべての議論の余地がある、としましょうあなたが望むならば、ブラケットを入れてください。

+4

's/htmlentities/htmlspecialchars /' - UTF8の時代には、ウムラウトのようなものをhtmlエンティティとしてエンコードする正当な理由はありません。 – ThiefMaster

+0

良い点。私はいつもhtmlentities($ string、ENT_COMPAT、 'UTF-8')を使用していますが、それは他の人がi18nのためにしていることが主な理由です。 htmlspecialchars()を使用する方が良いでしょうか? – landons

+0

@landons:スタック全体がUTF-8を処理できるなら(ThiefMasterによると、これはほぼ2012年です)、 'htmlentities'はちょっと膨らんでいます。さらに、HTMLを読むことができなくなります。 – Jon

関連する問題