带有 utf-8 的 php substr() 函数留下 �标记在最后
这是简单的代码
<?php
$var = "Бензин Офиси А.С. также производит все типы жира и смазок и их побочных продуктов в его смесительных установках нефти машинного масла в Деринце, Измите, Алиага и Измире. У Компании есть 3 885 станций технического обслуживания, включая сжиженный газ (ЛПГ) станции под фирменным знаком Петрогаз, приблизительно 5 000 дилеров, двух смазочных смесительных установок, 12 терминалов, и 26 единиц поставки аэропорта.";
$foo = substr($var,0,142);
echo $foo;
?>
,它输出如下内容:
Бензин Офиси А.С。 。
我尝试了 mb_substr() 但没有成功 如何以正确的方式做到这一点?
Here is simple code
<?php
$var = "Бензин Офиси А.С. также производит все типы жира и смазок и их побочных продуктов в его смесительных установках нефти машинного масла в Деринце, Измите, Алиага и Измире. У Компании есть 3 885 станций технического обслуживания, включая сжиженный газ (ЛПГ) станции под фирменным знаком Петрогаз, приблизительно 5 000 дилеров, двух смазочных смесительных установок, 12 терминалов, и 26 единиц поставки аэропорта.";
$foo = substr($var,0,142);
echo $foo;
?>
and it outputs something like this:
Бензин Офиси А.С. также производит все типы жира и смазок и их побочных продук�...
I tried mb_substr() with no luck. How to do this the right way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
只要您的服务器上启用了 mbstring,上面的注释就是正确的。
这是 php 文档:
http://php.net/manual/en/book.mbstring。 php
The comments above are correct so long as you have mbstring enabled on your server.
Here's the php docs:
http://php.net/manual/en/book.mbstring.php
unicode 字符串的正确(逻辑)替代方案;
使用 PHP: mb_substr - 手册
A proper (logical) alternative for unicode strings;
Use the PHP: mb_substr - Manual
如果您的字符串可能包含 Unicode(多字节)字符并且您不想破坏这些字符,请根据您的需要将
substr
替换为以下两个字符之一:限制为 142字符:
限制为142 字节:
If your strings may contain Unicode (multi-byte) characters and you don’t want to break these, replace
substr
with one of the following two, depending on what you want:Limit to 142 characters:
Limit to 142 bytes:
PHP5 本身并不理解 UTF-8。如果 PHP6 发布的话,建议将其用于 PHP6。
使用多字节字符串函数安全地操作 UTF-8 字符串。
例如,您的情况是
mb_substr()
。PHP5 does not understand UTF-8 natively. It is proposed for PHP6, if it ever comes out.
Use the multibyte string functions to manipulate UTF-8 strings safely.
For instance,
mb_substr()
in your case.如果您想使用
strlen
函数来计算要返回的字符串长度,并且您的字符串$word
具有UTF-8
编码,你必须使用mb_strlen()
函数:$foo = mb_substr($word, 0, mb_strlen($word)-1);
If you want to use
strlen
function, to calculate length of string, which you want to return and your string$word
hasUTF-8
encoding, you have to usemb_strlen()
function:$foo = mb_substr($word, 0, mb_strlen($word)-1);
切勿在
substr
函数中对UTF-8
字符串使用常量:50% 的机会您会在字符串末尾得到半个字符。
这样做:
100% 安全的结果。
没有
mb_substr
。Never use constant in
substr
function forUTF-8
string:50% chance you will get half of a character at end of the string.
Do it like this:
100% safe result.
No
mb_substr
.我希望这个解决方案对您有所帮助,因为它对我帮助很大。
I hope this solution help you as it helped me a lot.