在javascript中转义字符/字符串

时间:2013-11-06 06:38:09

标签: javascript php html escaping html-escape-characters

如何逃避此字符串或者我应该将字符'"); " ' (; '") ;放在此html元素上

<img src='<?=$this->webroot;?>img/document-note.png' onmouseover="tooltip.pop(this,'<?=$finalNote;?>')" />

$finalNote变量等于'"); " ' (; '") ;此值。

我尝试过这样做:

$finalNote = str_replace('"','\"',$finalNote);
$finalNote = str_replace("'","\'",$finalNote);

输出结果如下:

<img ;')"="" \'\")="" (;="" \'="" \"="" );="" onmouseover="tooltip.pop(this,' \'\" src="/img/document-note.png">

我的代码没有意义(我知道^ _ ^)

我也试过用这个:

$finalNote = htmlspecialchars($finalNote);

输出就是这个:

<img onmouseover="tooltip.pop(this,' '&quot;); &quot; ' (; '&quot;) ;')" src="/img/document-note.png">

这仍然是错误的,因为当我将图像悬停在我拥有它时会给我这个错误: enter image description here

我的问题是如何正确地逃避这些值,以便我可以在<img onmouseover="tooltip.pop(this,' '"); " ' (; '") ; ')" />上呈现这些值而不会出现这些错误。

您的帮助将受到极大的限制!谢谢!

2 个答案:

答案 0 :(得分:1)

<?php

$finalNote = " '\"); \" ' (; '\") ;";

$finalNote = htmlspecialchars(addslashes($finalNote), ENT_QUOTES);

?>

<script>

var tooltip = {
    pop: function(obj, note) {
        console.log(obj);
        console.log(note);
    }
};

</script>
<img src='img/document-note.png' onmouseover="tooltip.pop(this,'<?=$finalNote;?>');" />

答案 1 :(得分:1)

您正在将字符串输出到Javascript中,因此首先需要确保它是有效的Javascript语法。然后将此Javascript输出到HTML中,因此您需要确保它是正确的HTML。所以你要看两个编码步骤:

htmlspecialchars(json_encode($string))

更确切地说:

htmlspecialchars(sprintf('tooltip.pop(this, %s)', json_encode($finalNote)))

现在这是onmouseover="..."的正确转义内容。