无法转义XML中的单引号
impossible to escape single quotes in XML
请帮我解决这个问题。我有一个生成XML的php文件。我有以下代码,我无法在XML中转义JS脚本,如下所示:
$xml_after='<html>'.htmlspecialchars('
<div class="options" id="options_'.$tables_row['id'].'">
<a class="insidetable" href="" title="'.$lang['delete'].'"
onClick="show_confirmation('''.$messages['delete_table'].''','''.$lang['close'].''',hide_element(''confirmation'');'''.$lang['delete'].''',remove_table('''.$tables_row['id'].''');hide_element(''confirmation'');'');return false;'" ><img src="../images/interface/icons/delete.png" />
</a></div>').'</html>';
问题出在onclick函数中。。请帮忙,已经损失了一整天,谢谢
请注意,htmlspecialchar()也会转义<
和>
。您必须分别对每个值使用它,而不是对整个html片段使用它。
htmlspecialchar()有一个选项,可以转义所有引号。
var_dump(htmlspecialchars("Escaping: <>&''"", ENT_QUOTES));
Ouptut:
string(35) "Escaping: <>&'""
但最好使用DOM,让它来处理转义。
此外,我建议在HTML中使用data-*属性。Javascript可以读取属性并将逻辑绑定到元素。这将实际的JS逻辑与HTML分离开来。
我认为您的代码的格式不正确
$xml_after='<html>'.htmlspecialchars('<div class="options"
id="options_'.$tables_row['id'].'">
<a class="insidetable" href="" title="'.$lang['delete'].'"
onClick="
show_confirmation('''.$messages['delete_table'].''','''.$lang['close'].'
'', hide_element(''confirmation'');'''.$lang['delete'].'
'', remove_table('''.$tables_row['id'].''');
hide_element(''confirmation
'');
'');return false;'" >
<img src="../images/interface/icons/delete.png" />
</a></div>').'</html>';
在show_confirmation
函数中的每个函数之后,都有一个;
,它在函数调用参数列表中无效
在onClick功能的最后一行:
'');'');return false;'" >
第二个''
是不匹配的,双引号'"
不应该被转义,因为我可以改变这一点,也许它对你有用。
相关文章:
- Javascript/jQuery:用HTML span标记替换单引号中的文本
- 删除单引号字符转义
- 将字符串中的单引号替换为双引号
- JavaScript:单引号'导致错误
- 如何通过HTML将带有单引号的JSON从PHP传递到Javascript
- 如何在java脚本中用单引号写逗号分隔的值
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- 用空格替换单引号和其他符号
- javascript单引号/双引号
- 如何在字符串输入的 Html 元素中的双引号内编写单引号
- 使用javascript为#、单引号和双引号编码值
- JavaScript 相等操作对单引号字符串和数字都成功
- 对字符串使用单引号或双引号
- 如何在javasciipt中添加单引号到字符串,该字符串将在nodeJS中作为mysql插入命令执行
- JavaScript:当存在单引号时,用于替换双花引号的正则表达式失败
- 单引号 JSP 到 JavaScript 函数
- 在文本区域中,输入用jquery str.replacement()替换哭泣的smiley live的单引号
- Javascript 正则表达式将括号和单引号替换为斜杠
- 如何在javascript中的eval函数中添加单引号
- 无法转义XML中的单引号