我使用php / mysqli阅读评论,但表中的各种评论都有单引号或双引号。
我将评论存储在数据属性中。使用chrome控制台,我可以看到引号在哪里抛出整个代码。
<?php
echo "<td><a href='' class='comment' data-toggle='modal' data-comment='".htmlentities($row[comment])."'>" . $row[partner_name] . "</a></td>";
?>
正如您在上面的代码中看到的,我尝试使用htmlentities。我也尝试过addlashes和两者的结合。
无论哪种方式,由于mysql表中的引用,我仍然无法正确显示注释。
我可以使用另一个PHP函数来解决这个问题吗?
请告诉我。
正上方是Chrome控制台的屏幕截图。在POTENTIAL 53之后,有一个引用我的代码的单引号。当它应该是评论的一部分时,所有其他橙色文本都被读作HTML。
必须有一种方法来读取单引号作为字符串的一部分。
请告知。
答案 0 :(得分:2)
嗯,有两个问题:
你必须编码东西,特别是引号:
$text = htmlentities($value, ENT_QUOTES);
title
属性不适用于换行符,因此您必须处理此问题。这样的事情应该可以胜任:
$text = preg_replace('/\r?\n/', '#xA;', $text);
答案 1 :(得分:1)
将标志ENT_QUOTES传递给你的htmlentities函数。见http://php.net/htmlentities。这将用引号引用替换引号,并防止它突破数据注释属性。
答案 2 :(得分:0)
尝试转义数据中的引号。这会影响到:
$pattern = "/\"|\'/";
$replace = '\\\"';
$subject = $row[comment];
$rowComment = preg_filter($pattern, $replace, $subject);
*提示 - 您也可以在存储之前过滤数据。
描述:echo $ rowComment将生成一个包含所有引号转义的字符串;