2010-02-20 34 views
0

我想用PHP打印一個表格,每行都有一個按鈕來將其內容(HTML代碼)加載到CKEditor實例中。使用CKEditor setData函數管理引號

$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' . "'" . $HTMLcode . "');" . '">Load</a></td>'; 
echo $column; 

的HTML代碼還包含因CSS樣式報價:

<p style='text-align: center;'> 

我有這樣的結果,顯然它打破了代碼:

<a href="#" onclick="CKEDITOR.instances.editor.setData('<p style='text-align: center;'>Great.</p>');">Load</a> 

任何解決方法嗎?任何幫助,將不勝感激! 在此先感謝Daniel。

回答

1

常見的解決辦法是htmlentities()

$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' 
     . "'" . htmlentities($HTMLcode, ENT_QUOTES) . "');" . '">Load</a></td>'; 

還有addslashes()這將使在JavaScript字符串可解析。

需要在數據庫查詢等,這些字符是單引號('),雙引號(「),反斜線()和NUL(空字節)被引用的字符之前返回與反斜槓的字符串。

選購ヶ輛()在和addslashes()什麼說的是,一個有效的HTML文檔中,必須有沒有生&符號&他們需要即使在JavaScript語句當這些都被轉義爲&amp;。不包含在CDATA標籤中。

+0

感謝大家的回答!勝利的時候:) – 2010-02-20 17:16:35

1

基本上,你有一些字符串中的引號,並希望他們逃脫。

一個解決方案,我想,會使用類似addslashes

$HTMLcode = "<p style='text-align: center;'>"; 
$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' . "'" 
      . addslashes($HTMLcode) . "');" 
      . '">Load</a></td>'; 
echo $column; 

,你會得到下面的HTML代碼:

<td><a href="#" onclick="CKEDITOR.instances.editor.setData('<p style=\'text-align: center;\'>');">Load</a></td> 

即則傳遞字符串中的引號到CKEDITOR.instances.editor.setData都逃脫了。