PHP MySQLi 转义引号

PHP MySQLi escape quotes

我正在使用 PHP/mysqli 来阅读评论,但是 table 中的各种评论有单引号或双引号。

我将评论存储在 data-attribute 中。使用 Chrome 控制台,我可以看到引用在哪里使整个代码乱七八糟。

 <?php
   echo "<td><a href='' class='comment' data-toggle='modal' data-comment='".htmlentities($row[comment])."'>" . $row[partner_name] . "</a></td>";
 ?>

正如您在上面的代码中看到的,我尝试使用 htmlentities。我还尝试了 addslashes 和两者的组合。

无论如何,由于 mysql table.

中的引号,我仍然无法正确显示评论

我可以使用另一个 PHP 函数来解决这个问题吗?

正上方是 Chrome 控制台的屏幕截图。在 POTENTIAL 53 之后,有一个单引号使我的代码失效。所有其他橙色文本都被读取为 HTML,而它应该是评论的一部分。

必须有一种方法可以将单引号作为字符串的一部分来读取。

将标志 ENT_QUOTES 传递给您的 htmlentities 函数。参见 http://php.net/htmlentities。这将用确定的引号替换引号并防止它突破数据注释属性。

嗯,有两个问题:

  1. 您必须对内容进行编码,尤其是引号:

    $text = htmlentities($value, ENT_QUOTES);
    
  2. title 属性不适用于换行符,因此您必须处理它。像这样的东西应该可以完成工作:

    $text = preg_replace('/\r?\n/', '#xA;', $text);
    

尝试转义数据中的引号。对此有影响的东西:

$pattern = "/\"|\'/";
$replace = '\\"';
$subject = $row[comment];
$rowComment = preg_filter($pattern, $replace, $subject);

*提示 - 您还可以在存储数据之前对其进行过滤。

说明:echo $rowComment 将生成所有引号都已转义的字符串;