【发布时间】:2013-12-18 22:22:49
【问题描述】:
我在 WAMP 服务器上遇到了一个恼人的问题,其中美元符号会去除以下两个字符。
$dollar_sign = '$';
var_dump($dollar_sign); // Returns string '$' (length=1)
echo $dollar_sign .'1234'; // Displays 34
echo '$' . number_format(1234, 0, '', ''); // Displays 34
echo '$1234'; // Displays 34
echo ord('$'); // Returns 36
使用单引号,而不是双引号。
从真实代码调试:
var_dump(bin2hex(self::$currencies[$code]['prefix'])); // Returns 5c24
我尝试了不同的字符集 Windows-1252、ISO-8859-1 和 UTF-8,但似乎不是字符集问题。
它适用于任何 LAMP 服务器 (Linux),但不适用于 Windows。
注意:我不是在寻找 HTML 实体解决方法。
编辑:以下工作,但我想知道为什么。就像单引号在我的 WAMP 安装中具有 eval() 行为。
echo str_replace('$', '\$', $dollar_sign) . '1234'; // Displays $1234
echo chr(36) . '1234'; // Displays $1234
编辑 2:已解决,请参阅导致模板处理程序的答案。
【问题讨论】:
-
这段代码对我来说在 WAMP 上运行良好。您的计算机在基本 WAMP 之外的某个地方遇到问题。你有没有配置任何特殊的 php 设置?
-
从命令行按预期工作并在 Windows 7、PHP 5.5.5 上使用
php -S。 -
不可重现。
echo '$1234';为其他所有人显示$1234。显示您的完整代码,或详细说明您的设置。 -
您是否尝试卸载它并重新安装最新版本?
-
Jessica:已经在使用最新的 WAMP。我并不惊讶它不能被复制。我在 7 年的 PHP 编码中从未见过这种行为。