Управление кавычками при использовании функции setData CKEditor - PullRequest
0 голосов
/ 20 февраля 2010

Я хочу напечатать таблицу на PHP, в каждой строке есть кнопка для загрузки ее содержимого (HTML-кодов) в экземпляр CKEditor.

 $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> 

Есть ли обходной путь для этого? Любая помощь будет оценена! Заранее спасибо, Даниэль.

Ответы [ 3 ]

1 голос
/ 20 февраля 2010

Все, что вам нужно сделать, это экранировать символы кавычки в строке, которую вы передаете функции setData.

1 голос
/ 20 февраля 2010

По сути, у вас есть несколько кавычек в строке, и вы хотите, чтобы они экранировались.

Решение, я полагаю, было бы использовать что-то вроде 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, экранируются.

1 голос
/ 20 февраля 2010

Общее решение: htmlentities () :

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

Также есть addlashes () , который должен сделать строку разбираемой в JavaScript.

Возвращает строку с обратными косыми чертами перед символами, которые необходимо заключать в кавычки в запросах к базе данных и т. Д. Это символы одинарных кавычек ('), двойных кавычек ("), обратной косой черты () и NUL (байт NULL).

Что говорит о выборе htmlentities () вместо addlashes (), так это тот факт, что в действительном HTML-документе не должно быть необработанных амперсандов &. Они должны быть экранированы как &amp; даже в операторах JavaScript , когда они не заключены в CDATA теги.

...