-1

我该如何转义这个字符串,或者我应该说'"); " ' (; '") ;要放在这个 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">

那仍然是错误的,因为当我悬停我拥有的图像时,它会给我这个错误: 在此处输入图像描述

我的问题是我如何正确地转义这些值,以便我可以在<img onmouseover="tooltip.pop(this,' '"); " ' (; '") ; ')" />没有这些错误的情况下呈现这些值。

您的帮助将不胜感激!谢谢!

4

2 回答 2

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;?>');" />
于 2013-11-06T06:43:17.713 回答
1

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

htmlspecialchars(json_encode($string))

更准确地说:

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

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

于 2013-11-06T07:05:48.573 回答