3

これが私のウェブサイトでCKEditorによって使用されるコードのセクションです:

CKEDITOR.config.IPS_BBCODE          = {"acronym":{"id":"8","title":"Acronym","desc":"Allows you to make an acronym that will display a description when moused over","tag":"acronym","useoption":"1","example":"[acronym='Laugh Out Loud']lol[/acronym]", ...

少し右にスクロールすると、次のように表示されます。

"[acronym='Laugh Out Loud']lol[/acronym]"

すべてのCKEditorコードをjavascript文字列内に格納する必要がありますが、文字列に「」と「」の両方が含まれているため、その方法がわかりません。問題が発生しますか?さらに、引用符をエスケープしてみましたが、エディターが機能しませんでした。

私に何ができるか考えてみませんか?

4

3 に答える 3

8

文字列を取得して、JavaScriptエスケープコードを挿入してみてください。JavaScriptは、次の形式を使用する場合、基本的に任意のUnicode値を使用できます。-\u####したがって、'文字の場合、コードは。\u0039であり、"文字の場合、コードは\u0034です。

つまり、文字列の例の部分を次のようにエンコードできます。

\u0034[acronym=\u0039Laugh Out Loud\u0039]lol[/acronym]\u0034

または、次のように引用符を単純にエスケープすることもできます。

\"[acronym=\'Laugh Out Loud\']lol[/acronym]\"

ここでの問題は、このような状況に陥ったときに発生します。

"data:{'prop1':'<a href="/url/here/">back\\slash</a>'}"

この方法で脱出すると、次のようになります。

"data:{\'prop\':\'<a href=\"/url/here/\">back\\\\slash</a>\'}\"

これは最初のバージョンよりもいくらか読みやすくなっていますが、逆シリアル化は、オブジェクトに逆シリアル化してから再シリアル化して再シリアル化する必要があるC#パーサーに渡されるjavascriptオブジェクトなど、オブジェクトスペースを通過するときに少し注意が必要です。戻ってきます。どちらの言語もエスケープ文字として\を使用しており、解決するための頭の体操であるファンキーなシナリオを取得することができます。

このメソッドの利点は、\u####JavaScriptのみが通常、通常のスタックでそれを使用することです。したがって、どの部分がどのアプリケーション部分によってエスケープされるべきかを理解するのは非常に簡単です。

于 2012-06-20T22:30:06.980 に答える
0

うーん..あなたはすでに引用符をエスケープしようとしたが、問題が発生したと言った。
これで問題が発生することはないので、次のことを試してください。

$newstring = addslashes($oldstring);
于 2012-06-20T22:19:52.857 に答える
0

Unicodeエスケープシーケンスを使用する必要はありません。文字列を二重引用符で囲み、文字列内の二重引用符の前に円記号を付けます。

var x = "\"[acronym='Laugh Out Loud']lol[/acronym]\"";
于 2012-06-20T22:45:35.387 に答える