pdo php javascript(ajax)的简单引号转义问题


simple quote escape issue with pdo-php-javascript (ajax)

这是我的问题:

我用php脚本(在ajax查询中调用)中的PDO从数据库中取回一个字符串:

...some code
$myString = $pdoObject['field'];
...some code

字符串包含一个单引号:"

example :
          it's strange

在这个php脚本的后面,我将字符串放入一个长字符串变量中,并将其发送回ajax查询:

$wholeString = "<tr><td><span title='$myString'>Some Text</span></td></tr>";

然后我把它寄回去:json_encode($wholeString);

在ajax查询中,我只是将结果放入jquery字段:

...some code
success : function(response){
    $("#myField").html(response);
}
...some code

标题的东西总是在报价处切割:

<tr><td><span title='it'>Some Text</span></td></tr>

如果我在将$myString放入$wholeString之前尝试使用htmlentities或htmlspecialchar,它不会更改任何内容。。。我在某个地方错过了一些东西。。。

感谢的帮助

您基本上有一个html注入问题。您需要使用htmlspecialchar()来转义文本中的所有html元字符,其中包括'

例如

$wholeString = "<tr><td><span title='" . htmlspecialchars($myString, ENT_QUOTES) . "'>Some Text</span></td></tr>";

正如代码中所写的,您将生成:

<tr><td><span title='It's strange'>Some text etc...

这将导致浏览器将跨度标签解析为

<span
   title='It'    // attribute "title" with value "It"
   s             // unknown random attribute s
   strange'      // unknown random attribute "strange" with illegal single-quote