无法转义XML中的单引号

impossible to escape single quotes in XML

本文关键字:单引号 XML 转义      更新时间:2024-01-15

请帮我解决这个问题。我有一个生成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: &lt;&gt;&amp;&#039;&quot;"

但最好使用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;'" > 

第二个''是不匹配的,双引号'"不应该被转义,因为我可以改变这一点,也许它对你有用。