PHP substr()函数未按预期工作
我正在删除字符串的第一个字符,并使用substr();功能PHP substr()函数未按预期工作,php,string,Php,String,我正在删除字符串的第一个字符,并使用substr();功能 例如: <?php $amount = '€300'; echo substr($amount ,1); ?> 这段代码做得很好,但是有一些bug。当我显示substr()函数应用的字符串时,它会在字符串的开头显示其他符号。下图有输出 在上图中,您可以看到它显示了不需要的符号。但当我再次应用substr()函数时,它成功地工作了 我只是想知道为什么这个函数有那个符号?这个符号是什么意思?为什么它会出现在输出中 我通过
例如:
<?php
$amount = '€300';
echo substr($amount ,1);
?>
这段代码做得很好,但是有一些bug。当我显示substr()函数应用的字符串时,它会在字符串的开头显示其他符号。下图有输出
在上图中,您可以看到它显示了不需要的符号。但当我再次应用substr()函数时,它成功地工作了我只是想知道为什么这个函数有那个符号?这个符号是什么意思?为什么它会出现在输出中 我通过使用
utf8\u decode
解决了这个问题,即:
$amount = utf8_decode('€300');
echo substr($amount ,1);
//300
您可以使用
mb\u substr()
php函数
在PHPFiddle中似乎也能正常工作。这可能是php设置和配置的问题。这看起来好像您试图将8位函数应用于utf编码的字符串,但这肯定不起作用。请阅读php中的unicode支持以及mbstring
扩展和“函数重载”`。问题似乎发生在€
符号上,而不是发生在$
上。当您从多字节字符中删除一个字节时,会发生这种情况。对于多字节编码的字符串(例如UTF-8),应该使用多字节感知字符串函数(mb*
)。
<?php
$amount = '€300';
echo mb_substr($amount, 1, NULL, "UTF-8");
?>