首页 > 解决方案 > php substr() 和货币符号奇怪的输出

问题描述

这是一个有点粗鲁的代码,我正在为这个简单的字符串格式化示例提供这个输出。

foreach (Transaction::where('customer',$id)->cursor() as $ftr) {
               
               $origValue=$ftr->value;
               $currency= mb_substr($origValue, 0, 1, "UTF-8");
               $value = substr($origValue, 1);

               dd($value);    //
}

$originalValue 等于例如“$50.00”;

$currency 正确设置为 "$";

$value 应该是 "50.00" 但这是上述 dd() 的结果是:

b"50.00 英镑"

(即使在“mb_substr”操作之后,$originalValue 仍然相同)

我做错了什么?

标签: phplaravelstringsplit

解决方案


这是问题所在。

您正在尝试使用 substr 返回字符串的一部分,其中您的字符串$origValue具有特殊字符。所以看看下面的代码

echo substr("£50.00", 1); // will print �50.00
echo mb_substr("£50.00", 1 , 5); // will print 50.00

还请阅读此 https://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.func-overload


推荐阅读