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。这将用确定的引号替换引号并防止它突破数据注释属性。
嗯,有两个问题:
您必须对内容进行编码,尤其是引号:
$text = htmlentities($value, ENT_QUOTES);
title
属性不适用于换行符,因此您必须处理它。像这样的东西应该可以完成工作:
$text = preg_replace('/\r?\n/', '#xA;', $text);
尝试转义数据中的引号。对此有影响的东西:
$pattern = "/\"|\'/";
$replace = '\\"';
$subject = $row[comment];
$rowComment = preg_filter($pattern, $replace, $subject);
*提示 - 您还可以在存储数据之前对其进行过滤。
说明:echo $rowComment 将生成所有引号都已转义的字符串;
我正在使用 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。这将用确定的引号替换引号并防止它突破数据注释属性。
嗯,有两个问题:
您必须对内容进行编码,尤其是引号:
$text = htmlentities($value, ENT_QUOTES);
title
属性不适用于换行符,因此您必须处理它。像这样的东西应该可以完成工作:$text = preg_replace('/\r?\n/', '#xA;', $text);
尝试转义数据中的引号。对此有影响的东西:
$pattern = "/\"|\'/";
$replace = '\\"';
$subject = $row[comment];
$rowComment = preg_filter($pattern, $replace, $subject);
*提示 - 您还可以在存储数据之前对其进行过滤。
说明:echo $rowComment 将生成所有引号都已转义的字符串;