[英]Escape hyperlink with exclamation marks in php.ini
我有一个配置文件,它带有如下文本警告:
warnings.1 = Please check the date
这些以HTML形式呈现给用户。 我需要嵌入如下所示的超链接:
warnings.1 = <a href="http://foo.com/!FOO!/">check with foo</a>
我一辈子都想不出如何逃避它,以使parse_ini_file()可以读取它并以我想要的方式获取该字符串。
http://php.net/manual/zh/function.parse-ini-file.php :
array parse_ini_file(string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL]])
scanner_mode:
可以是INI_SCANNER_NORMAL(默认)或INI_SCANNER_RAW。 如果提供了INI_SCANNER_RAW,则不会解析选项值。
变更日志:5.3.0添加了可选的scanner_mode参数。
因此,如果您未使用5.3,则会大为吃惊。 或者您需要使用其他实现,parse_ini_file并不是PHP的唯一INI文件解析器。
我最终切换到Zend_Config_Xml,因为对我们的开发人员而言,比起尝试解决有点怪异的.ini语法,如何转义数据更为清楚。
感谢所有的答案。
我最近遇到了一种类似的情况,经过一番思考,我得出了一个结论,问题不在于所使用的函数或类,而在于使用本身。 参数值,例如
<a href="http://foo.com/!FOO!/">check with foo</a>
最好以href
的值为参数的值的方式更好地实现。 例:
warnings.1.href = "http://foo.com/!FOO!/"
warnings.1.text = "check with foo"
这是因为参数值应仅包含绑定更改的值(从实例到实例)。 在您的情况下,锚标记最好留在html本身,而不是.ini
配置文件中。 这不仅可以使配置文件保持轻量化,还可以保持整洁,这是因为音乐会之间的分隔,其中HTML代码应位于HTML中,而配置值应位于配置文件中。
因此,是的,不需要切换PHP版本或向parse_ini_file
函数添加参数(因为这样做将是Zend_Config_Ini类的黑客,如果需要的话,最好将其作为正式补丁进行)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.