htmlspecialchars 只适用于某些环境


htmlspecialchars only works in some environments

我在两个不同的环境中测试完全相同的功能,一个是本地开发环境,另一个是暂存服务器。 它们具有完全相同的代码。

当我对包含该功能的每个端点执行curl请求时,我得到两个不同的结果:

本地 (php 5.4)

//this was the desired output
<p><span>Awesome water shooting power</span></p>

暂存 (php 5.3)

//none of the html chars are changed.
<p><span>Awesome water shooting power</span></p>

实际的文本字符串通过以下方式htmlspecialchars运行:

htmlspecialchars( $req->get('description') )

我是否应该在此htmlspecialchars方法中专门使用所有其他参数,以使它在任何环境中的行为方式相同? 还是在 PHP.ini 级别可能会发生一些事情?

php 文档中的 htmlspecialchars

编码:定义转换中使用的编码。如果省略,则此参数的默认值为 ISO-8859-1 之前的 PHP 版本 到 5.4.0,以及从 PHP 5.4.0 开始的 UTF-8。

因此,基于此,我尝试显式设置字段,这样它们就不会静默地默认为不同的东西。

htmlspecialchars( $string , ENT_COMPAT, 'UTF-8' );

现在,两个不同环境之间的输出是相同的。