ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP がリッチ テキスト エディターのコンテンツを自動的にエスケープして保存するため、読み取りエラーが発生します。_PHP チュートリアル

ThinkPHP がリッチ テキスト エディターのコンテンツを自動的にエスケープして保存するため、読み取りエラーが発生します。_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:21:041119ブラウズ

ThinkPHP がリッチ テキスト エディターのコンテンツを自動的にエスケープして保存することによって引き起こされる読み取りエラーの問題の解決策、

ThinkPHP の conf ファイルの Convention.php には構成オプションがあります

'DEFAULT_FILTER' => 'htmlspecialchars', // I 関数のデフォルトのパラメーター フィルター方法...
このメソッドはデフォルトで有効になっています。つまり、データベースに保存したデータは htmlspecialchars 関数によってエスケープされます。

私はプロジェクトで Kindeditor リッチ テキスト エディターを使用しています (Ueditorckeditor を使用している可能性があります)。記事のコンテンツをリッチ テキスト エディターで編集してデータベースに保存し、データベースから読み取って表示します。ウェブページ。

この過程で、データベースに送信するテキストデータをinsertメソッドで直接表示すると正常にHTMLページに解析できるのですが、データベースからHTMLデータを読み込むと、記事のコンテンツは HTML コード全体になります。ダンプには、読み取った配列の内容が出力されます。内容がエスケープされていることがはっきりとわかります。

1. データベースに保存されているコンテンツと記事のコンテンツの例:

リーリー

2. HTML ページで解析されたコンテンツ効果:

リーリー

明らかに、HTML タグに変換されるべきコンテンツがテキスト内のコンテンツに解析され、テキスト コンテンツの最も外側の部分に二重引用符が追加されていることがわかります。

通常の表示では二重引用符は不要です。データベースから読み取られたデータは HTML ページのソース コードであり、HTML ページに挿入された後、タグが解釈され、タグ内のコンテンツがページとして表示されます。

上記の分析により、ThinkPHP はコンテンツの保存処理中に自動的にコンテンツをエスケープし、データベースに保存されたコンテンツが再度読み出されるときにエスケープされたコンテンツになることが判明しました。本文のラベルに属します。

そこで、思い切って TP の conf ディレクトリに移動して、convention.php 設定ファイルを見つけ、DEFAULT_FILTER 関数を無効にして、将来使用する必要があるときに手動で呼び出します。

再度テストすると、今度は問題が解決されました。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/861795.html技術記事 ThinkPHP がリッチ テキスト エディターのコンテンツを自動的にエスケープして保存することによって発生する読み取りエラーの問題の解決策は、ThinkPHP の conf ファイルの Convention.php に構成オプション 'DEFAULT_FILTER' = 'htmlspecia...
があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。