我有一个单元测试,我试图测试NumberFormatter.
我的代码的简化版本是:
\n\npublic function testGetFormattedPrice()\n{\n $formatter = NumberFormatter::create(\n "de_DE",\n NumbererFormatter::CURRENCY\n );\n\n $this->assertEquals(\n \'16,66 \xe2\x82\xac\',\n $formatter->formatCurrency(16.66, "EUR")\n );\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这会导致失败:
\n\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-\'16,66 \xe2\x82\xac\'\n+\'16,66 \xe2\x82\xac\'\nRun Code Online (Sandbox Code Playgroud)\n\n我假设这与欧元符号(可能是字符编码)或字符串中的某种隐藏字节有关,但不太确定如何检查这一点?
\n\n谁能给我一些关于如何调试这个问题的建议,或者可能的原因是什么?
\n\n干杯,
\n\n莫
\n我正在浏览 SO 答案,发现大多数用于替换多个空格的解决方案是:
$new_str = preg_replace("/\s+/", " ", $str);
Run Code Online (Sandbox Code Playgroud)
但在很多情况下,空格字符包括 UTF 字符,包括换行、换页、回车、不间断空格等。 这个 wiki描述了 UTF 定义了二十五个定义为空格的字符。
那么我们如何使用正则表达式替换所有这些字符呢?