私はこのように見えるかもしれない文字列を持っています
$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 をそのままにしておく必要があります
私はこのように見えるかもしれない文字列を持っています
$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 をそのままにしておく必要があります
免責事項: <、>、および & を除いて、エンティティをエンコードしません。つまり、本当にこれが必要な場合は、次のようにします。
$str = '...';
$str = htmlentities($str,ENT_NOQUOTES,'UTF-8',false);
$str = str_replace(array('<','>'),array('<','>'), $str);
良い答えは、パスカル・マーチンの投稿でした
再開するには、次のコードを使用して対応のリストを取得できますcharacter => entity
。
$list = get_html_translation_table(HTML_ENTITIES);
unset($list['"']);
unset($list['<']);
unset($list['>']);
unset($list['&']);
あなたが直面している問題は、状況によっては既にテキスト内に ' <
' と ' >
' をエンコードしているため、変換後にそれらを除外する必要があることです。
これは Evert の回答に似てい1 < 2
ますが、マークアップのようなコンテンツを許可するためにもう 1 つの手順を追加します。
$str = htmlentities($str,ENT_NOQUOTES,'UTF-8',false);
$str = str_replace(array('<','>'),array('<','>'), $str);
$str = str_replace(array('&lt;','&gt'),array('<','>'), $str);
以前に 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);
私はそれが私が時々やりたいことであることを知っています。
幸運を。
テキストのみを変換する場合は、次を試してください。
$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);