8

私はこのように見えるかもしれない文字列を持っています

$str = "<p>Me & Mrs Jones <br /> live in <strong style="color:#FFF;">España</strong></p>";
htmlentities($str,ENT_COMPAT,'UTF-8',false);

HTML タグを変換せずにテキストを HTML エンティティに変換するにはどうすればよいですか?

注: HTML をそのままにしておく必要があります

4

5 に答える 5

7

免責事項: <、>、および & を除いて、エンティティをエンコードしません。つまり、本当にこれが必要な場合は、次のようにします。

$str = '...';
$str = htmlentities($str,ENT_NOQUOTES,'UTF-8',false);
$str = str_replace(array('&lt;','&gt;'),array('<','>'), $str);
于 2009-12-22T12:36:26.633 に答える
1

良い答えは、パスカル・マーチンの投稿でした

このSO トピックを参照してください

再開するには、次のコードを使用して対応のリストを取得できますcharacter => entity

$list = get_html_translation_table(HTML_ENTITIES);
unset($list['"']);
unset($list['<']);
unset($list['>']);
unset($list['&']);
于 2013-09-03T08:02:43.517 に答える
1

あなたが直面している問題は、状況によっては既にテキスト内に ' <' と ' >' をエンコードしているため、変換後にそれらを除外する必要があることです。

これは Evert の回答に似てい1 < 2ますが、マークアップのようなコンテンツを許可するためにもう 1 つの手順を追加します。

$str = htmlentities($str,ENT_NOQUOTES,'UTF-8',false);
$str = str_replace(array('&lt;','&gt;'),array('<','>'), $str);
$str = str_replace(array('&amp;lt;','&amp;gt'),array('&lt;','&gt;'), $str);
于 2009-12-22T12:41:25.920 に答える
0

以前に htmlentities を使用したことはありませんが、(私がよく使用する) urlencode のもう少し堅牢なバージョンのようです。あなたは試してみたいかもしれません:

htmlentities(strip_tags($str,ENT_COMPAT),'UTF-8',false);

少しのナゲットと同じように、<br>標準的なキャリッジリターンとして保存したい場合は、次のようにすることができます:

htmlentities(strip_tags(str_replace("<br>","\n",$str,ENT_COMPAT)),'UTF-8',false);

私はそれが私が時々やりたいことであることを知っています。

幸運を。

于 2009-12-22T12:34:07.053 に答える
-1

テキストのみを変換する場合は、次を試してください。

$orig = "<p>Me & Mrs Jones <br /> live in <strong style="color:#FFF;">España</strong></p>";
$str = strip_tags($orig);

$str = htmlentities($str,ENT_COMPAT,'UTF-8',false);
于 2009-12-22T12:33:19.177 に答える