【问题标题】:Escape quote or special characters in array value数组值中的转义引号或特殊字符
【发布时间】:2011-05-04 22:18:17
【问题描述】:

在我的 PHP 代码中,我设置了一个区域供人们输入要显示的自己的信息。信息存储在一个数组中,我想让它尽可能灵活。

如果我有类似...

$myArray[]['Text'] = 'Don't want this to fail';

$myArray[]['Text'] = "This has to be "easy" to do";

我将如何转义数组值中的撇号或引号?

谢谢

编辑:由于只有一对一的关系,所以我将数组更改为这种结构...

$linksArray['Link Name'] ='/path/to/link';
$linksArray['Link Name2'] ='/path/to/link2';
$linksArray['Link Name2'] ='/path/to/link3';

我的计划是设置一个模板,其中包含一个包含文件,其中包含其他人(技术水平较低的人)可以维护的格式的这些链接。他们将可以直接访问 PHP,恐怕他们可能会在“链接名称”区域中添加单引号或双引号并破坏系统。

再次感谢。

可能的解决方案:

感谢@Tim Cooper。

这是一个对我有用的示例...

$link = "http://www.google.com";
$text = <<<TEXT
Don't you loving "googling" things
TEXT;
$linksArray[$text] = $link;

【问题讨论】:

    标签: php arrays escaping


    【解决方案1】:

    使用heredoc 可能是一个很好的解决方案:

    $myArray[]['Text'] = <<<TEXT
    
    Place text here without escaping " or '
    
    TEXT;
    

    【讨论】:

    • 感谢您的帮助。我发布了一个示例,该示例基于您的建议作为上面的编辑。
    【解决方案2】:

    PHP 将在输入时正确处理这些字符串。 如果您按照所示自己构建字符串,则可以在引号样式(单引号和双引号)之间交替...如:

    $myArray[]['Text'] = "Don't want this to fail";
    $myArray[]['Text'] = 'This has to be "easy" to do';
    

    或者,如果必须转义字符,则在引号前使用 \ 字符。

    $myArray[]['Text'] = 'Don\'t want this to fail';
    $myArray[]['Text'] = "This has to be \"easy\" to do";
    

    【讨论】:

    • 谢谢。尝试为可能在代码级别键入但不熟悉转义的人进行转义......
    【解决方案3】:

    如果您真的想让 i 变得简单,请使用 INI 或 XML 样式的单独配置文件。 INI 通常是人们最容易手动编辑的。如果你有一个真正的嵌套结构,XML 是很好的。

    【讨论】:

    • 我沿着这条路线的东西可能是我唯一的选择。我正在考虑为他们构建一个 Web 界面,以便将“链接”和“url”值输入表单,这些值可以放在平面文件中或存储在 MySQL 中。感谢您的建议。
    【解决方案4】:

    除非您让用户直接输入 PHP 代码(您可能不会),否则您不必担心他们输入的内容,直到您去显示它。当您实际显示他们输入的信息时,您需要使用类似htmlentities() 的方式对其进行清理。

    编辑:我意识到我可能误解了你的问题。如果是这样,请忽略这个! :)

    【讨论】:

    • 我用更多信息编辑了我的原始消息。当他们进行编辑时,他们将访问他的源代码。我可能只是构建一个管理工具来输入信息...
    【解决方案5】:

    您可以使用 addlashes($str) 函数自动转义引号。

    您也可以尝试 htmlentities,它将引号和其他特殊值编码为 HTML 实体:http://php.net/manual/en/function.htmlentities.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多