サイトのテキスト エディタとして tinyMCE を使用していますが、データベースに保存する前にテキストを再フォーマットしたいと考えています (’ タグを ' に変更し、次に ' に変更します)。tinyMCe を使用してこれを行う簡単な方法を見つけることができず、htmlentities() を使用すると <> を含むすべてが変更されます。何か案は?
5 に答える
strip_tags($str, $allowed_tags)
以下のように使用できます。
$txt = strip_tags($txt, '<p><a><br>');
それはあなたが保存したいタグに依存します。TinyMCEのすべての機能を使用して、テキストにテーブル構造のような次のタグを含めることができると仮定します。その場合、それを行う簡単な方法はありません(1つの方法は、PHPドキュメントオブジェクトモデルを使用してhtmlドキュメントを解析することです。
ただし、TinyMCEには、エンティティエンコーディング用のいくつかの構成オプションがあります。TinyMCEマニュアルの構成オプションentity_encoding、entities、およびencodingを確認することをお勧めします。
TinyMCE と FCK の両方に、多数の構成オプションがあります。ドキュメントを検索するのは面倒ですが、努力する価値はあります。
TinyMCE では、「entity_encoding」オプションを使用してエンティティ エンコーディングを指定できます。エディターを作成するときに指定できます。こんな感じかも…。
tinyMCE.init({
entity_encoding: '数値'
});
これは ’ のようなタグを変更します。' に。
tinyMCE では、許可されたタグの「ホワイトリスト」を指定できます。これにより、リストに含まれていないタグが削除されます。
tinyMCE.init({
... // other init instructions
valid_elements: 'p,a[href],br',
});
私たち自身のプロジェクトでは、このホワイトリストを内部コンバーターと組み合わせて、HTML をデータベースの BB のような形式に変換し、ページに印刷する必要があるときに再び HTML に戻します。
更新:質問がより明確になるように編集されたので、上記で入力した内容では問題が解決しないことがわかります。質問者が望んでいるのは、HTML タグに影響を与えずに文字エンティティを変換する方法です。
私たち自身のプロジェクトでは、使用する内部コンバーターがこの仕事をします。HTML から内部表現に変換すると、エンコードされた文字は文字自体に変換されます。HTML に変換し直すと、上位の文字がエンコードされます。これは、文字ごとのパーサーのようなスタイルで行われます。ただし、このアプローチは、ニーズに対して複雑すぎる可能性があります。
多くの人が使用するショートカットは、一連の正規表現を使用することですが、文字エンティティを変換すると同時にアンパサンド&
とセミコロンを保持するように正規表現を配置するのが難しい場合があります。また、考えられるすべての文字エンティティをカバーするには、数十の正規表現が必要になることもわかります。;
ええと、私は実際には答えを持っていません。
PHP マニュアルから直接: strip_tags()
$allowable_tags 変数を使用すると、許可されたタグの文字列を定義できます。このオプションの 2 番目のパラメーターを使用して、削除してはならないタグを指定できます。