【问题标题】:Allow single and double quotes in PHP在 PHP 中允许单引号和双引号
【发布时间】:2012-05-07 07:25:24
【问题描述】:

我有一个 PHP 论坛应用程序 (PHPBB),它在网站前端显示论坛标题。生成这个标题的代码是stripBBCode($row1["topic_title"])

每个论坛标题实际上是一个引用,如下所示:

心中充满激情,没有什么是你做不到的。 “现在 什么?”斯瓦米·西瓦南达

PHP 在标题中的单引号和双引号存在问题,因此当它遇到这些引号之一时,它实际上会停止解析 PHP。我理解 PHP 这样做的原因,但我没有一个可行的解决方案来允许 PHP 解析带有引号和撇号的文本字符串。

我可以对stripBBCode($row1["topic_title"]) 做什么以允许使用这个标点符号?

提前致谢。

【问题讨论】:

  • 不确定 htmlspecialchars() 是否是解决方案?
  • 是的,这应该可以解决问题:)
  • 似乎不起作用:htmlspecialchars(stripBBCode($row1["topic_title"]), ENT_QUOTES)
  • htmlspecialchars() 会将特殊字符切换为 html 字符代码...您需要对传递给 stripBBCode 函数的参数执行此操作,而不是函数的结果。在 PHP 中解析字符串以进行进一步处理时,addslashes() 应该可以工作。
  • addslashes 不起作用....stripBBCode 函数如下,我如何在此处添加 htmlspecialchars: function stripBBCode($text_to_search) { $pattern = '|[[\/\!] *?[^[]]*?]|si'; $替换='';返回 preg_replace($pattern, $replace, $text_to_search); }

标签: php parsing


【解决方案1】:

我很好奇为什么这个问题没有答案,尽管这么老了。毕竟,每当我们处理任何带有文本字段的表单时,我们都会遇到这个问题,用户可以在其中输入任何文本。

在我的例子中,它是“bucket list”项目的标题字段。我尝试使用单引号和双引号输入字符串。这些已正确存储在数据库中,但随后显示的字符串在第一个 ' 或 " 的位置被缩短。

对我来说,htmlspecialchars() 成功了。特别是,输入字段如下所示:

echo '<input type="text" value="'.htmlspecialchars($this->title).'">';

该字段现在可以正确显示字符串中的 ' 和 "。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2021-07-02
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多