【问题标题】:PHP Double Quotes from MySQL, breaking htmlentities来自 MySQL 的 PHP 双引号,打破了 htmlentities
【发布时间】:2014-10-03 21:36:56
【问题描述】:

我的结果有问题。 请有人能告诉我我做错了什么。

我在 mysql 字段中有这个文本:

----------------------------------------------------
text “strange double quotes” "normal double quotes"
----------------------------------------------------

在文本区域中,我从数据库中回显字符串

<textarea>
    $string = stripslashes(htmlspecialchars_decode($string,ENT_QUOTES));
    echo htmlspecialchars($string);
</textarea>

然后崩溃(不显示任何内容)。


但如果我只有普通文本或普通引号:

"this is a correct text with quotes"

这行得通。

你知道我需要做什么吗?

TY

【问题讨论】:

  • 这里stripslasheshtmlspecialchars_decode的目的是什么?为了确保数据安全,您只需要htmlspecialchars(尽管在该调用中指定字符集是个好主意)。
  • 您遇到的崩溃的性质是什么?你得到了什么错误,或者是什么让你相信这是一个崩溃?

标签: php quotes


【解决方案1】:

您的代码按预期工作:

<?php
$string = 'text “strange double quotes” "normal double quotes"';

$string = stripslashes(htmlspecialchars_decode($string,ENT_QUOTES));
echo htmlspecialchars($string);
?>

产量:

text “strange double quotes” &quot;normal double quotes&quot;

在将$string 的值传递给htmlspecialchars_decode 之前检查它的值,例如:

<?php
$string = null;

$string = stripslashes(htmlspecialchars_decode($string,ENT_QUOTES));
echo htmlspecialchars($string);
?>

根据您的错误描述,不会产生任何结果/空/空白。

【讨论】:

  • 同一段代码,在我刚刚创建的 test.php 文件中单独测试。在我的机器上不起作用。 Wamp php 5.5.12。 clip2net.com/s/j1B5ag
  • @JoseFaro 我在 Windows 上的 xampp 上是 5.5.9 x86 vc11 线程安全的。是轰炸htmlspecialchars_decodestripslashes 还是htmlspecialchars?需要一些var_dumps 才能真正了解您的具体情况。使用增量调试输出更新您的问题。
猜你喜欢
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多