1


1

jQueryとmySQLで文字列をエスケープおよびエスケープ解除する方法

私のデータベースには、フリーテキスト領域があり、多くのことに引用符を使用するフィールドがあります。 私のWebサイトでは、そのフィールドはtextareaに表示されていますが、textareaタグの間に値を単純に入れることはできません。 javascriptで設定できるようにする必要があります。 私はjQueryを使用してこれを行います:

jQuery('#notes').val('{NOTES}');

テキストには一重引用符または二重引用符が含まれている可能性があるため、これをmySQLからPHP、jQueryに渡す方法がわからないため、テキストエリアに配置できます。 誰かが前にこれをやったことがありますか?

以下を使用して解決した問題:

jQuery('#notes').val(jQuery('#your-hidden-div-id').html());

3 Answer


4


PHPのhttp://php.net/addslashes [addslashes()]を使用して引用符をエスケープし、JavaScript文字列内で使用できるようにします。

jQuery('#notes').val('');

あなたのコードから、何らかのテンプレートエンジンを使用できると思いますので、\ {NOTES}を割り当てる場所に「addslashes」を追加する必要があります。

データ内に改行がある場合、JS文字列が壊れるので、それらも削除する必要があります(たとえば、PCRE正規表現で削除します)。 別の方法は、非表示の内部にデータをロードすることです

その後:

jQuery('#notes').val(jQuery('#your-hidden-div-id').html());


0


ダブルエスケープが心配ですか? データベースから単純に引き出しても、文字は変更されません。 どのようにPHPからJavascriptに渡しますか? AJAXリクエストですか? データをテキストとして受け取った場合、エスケープも発生しないはずです。

注意する必要があるのは、jQueryからPHP経由でMySQLに返送することです。


0


jQuery( '#notes')。text( '{NODES}')

文字列をエスケープする必要があります。 texteareaで動作するかどうかはわかりませんが、そう思います。

次のjQueryプラグインを使用することもできます。

このようないくつかのコードは以下よりも動作するはずです:

jQuery( '#notes')。val($。escape( '{NODES}'))

更新

これもうまくいくはずです

{NODES}.replace('\'','\\\'');
{NODES}.replace('\"','\\\"');