2012-06-20 86 views
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字符串裏面,但是我不知道該怎麼做,因爲字符串裏有「和」兩個字符,看看問題了嗎?另外,我不認爲我可以逃避引號,因爲我嘗試過這樣做和編輯沒有工作。

任何想法我可以做什麼?

+5

所有的引號都屬於引號。 – ThinkingStiff

+1

請參閱http://stackoverflow.com/q/97578/102937用於在Javascript中轉義引號。 –

+0

另外http://stackoverflow.com/questions/2004168 –

回答

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>\'}\" 

雖然這是一定程度上比第一版本更易讀 - 解串行化跨越對象的空間去時,諸如javascript對象被傳遞到一個C#解析器需要它可以是有點棘手反序列化爲對象,然後重新序列化並重新下載。兩種語言都使用\作爲它們的轉義字符,並且有可能獲得時髦的場景,這些場景是腦筋急轉彎想要解決的。

\u####方法的優點是隻有JavaScript通常在典型的堆棧中使用它 - 因此很容易理解什麼部分應該被什麼應用程序部分解開。

0

嗯..你說你已經試圖逃避報價,它給了問題。
這不應該給所有的問題,那麼試試這個:

$newstring = addslashes($oldstring); 
+0

在這個問題上沒有提到PHP或PHP標記,爲什麼你會建議? –

+0

@DondiMichaelStroma - 這是我的錯。發佈後我改變了我的問題 – Nate

0

沒有必要使用Unicode轉義序列。只需用雙引號包圍您的字符串,並在字符串內的任何雙引號之前加上反斜槓即可。

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