【问题标题】:How to escape special characters in a file parsed by PHP parse_ini_file function?如何转义 PHP parse_ini_file 函数解析的文件中的特殊字符?
【发布时间】:2012-11-09 11:00:24
【问题描述】:

我想在配置文件中保留某个字符串,由 PHP parse_ini_file() 函数解析。但是,此字符串包含一些需要以某种方式编码的特殊字符(带有0x2C0x3D 之类的代码)。有没有办法在这样的文件中写一个带有十六进制代码的特殊字符?

【问题讨论】:

  • 也许你应该说当你在要解析的文件中使用这些字符时实际问题是什么?
  • 只要你能正确地逃脱它们……一切皆有可能。选项很多。
  • @arkascha,我需要保留来自第三方应用程序的某个二进制密钥(如果你好奇的话,Map Quest)。我知道如何在 PHP 代码中转义这些字符,但我认为这种数据不应该嵌入到代码中。同时,我希望.ini 文件清晰易读。
  • @JanDvorak,是的,这就是我要问的:什么选项?

标签: php encoding special-characters


【解决方案1】:

转义 INI 值的正确方法是将它们括在 "double quotes" 中。如果您的字符串不包含双引号,则可以将其用作用双引号括起来的值。

根据http://php.net/manual/en/function.parse-ini-file.php#100046,只要值中没有两个连续的双引号,用反斜杠转义单引号似乎就可以工作

如果你想自己逃跑,你当然可以:

htmlspecialchars / htmlspecialchars_decode 转义 <,>,&"

htmlentities / html_entitity_decode 会非常激进(但也非常安全)逃逸到 HTML 实体

urlencode / urldecode 将转义除_-~. 之外的所有特殊字符。

base64_encode / base64_decode 将确保编码字符串仅包含字母数字字符和+=/。这可能是编码二进制数据的最佳选择,但不能保持可读性。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多