我想在PHP中打印一个表,每一行都有一个按钮,用于将其内容(HTML代码)加载到CKEditor实例中。
$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' . "'" . $HTMLcode . "');" . '">Load</a></td>';
echo $column;
由于CSS样式,HTML代码也包含引号:
<p style='text-align: center;'>
我有这个结果,显然它打破了代码:
<a href="#" onclick="CKEDITOR.instances.editor.setData('<p style='text-align: center;'>Great.</p>');">Load</a>
对此有何解决方法?任何帮助,将不胜感激! 提前谢谢,丹尼尔。
答案 0 :(得分:1)
常见的解决方案是htmlentities():
$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData('
. "'" . htmlentities($HTMLcode, ENT_QUOTES) . "');" . '">Load</a></td>';
还有addslashes(),它应该使字符串在JavaScript中可解析。
在数据库查询等中需要引用的字符之前返回带反斜杠的字符串。这些字符是单引号('),双引号(“),反斜杠()和NUL(NULL字节)。
在addslashes()上选择htmlentities()的意思是,在有效的HTML文档中,必须没有原始的&符号&
。他们需要在&
中转义为CDATA
,即使在JavaScript语句中,如果这些内容未包含在{{1}}标记中。
答案 1 :(得分:1)
您要传递给setData函数的字符串中只需要escape the quote characters。
答案 2 :(得分: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
的字符串中的引号将被转义。