Search code examples
phputf-8substr

php substr() function with utf-8 leaves � marks at the end


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?


Solution

  • The comments above are correct so long as you have mbstring enabled on your server.

    $var = "Бензин Офиси А.С. также производит все типы жира и смазок и их побочных        продуктов в его смесительных установках нефти машинного масла в Деринце, Измите, Алиага и Измире. У Компании есть 3 885 станций технического обслуживания, включая сжиженный газ (ЛПГ) станции под фирменным знаком Петрогаз, приблизительно 5 000 дилеров, двух смазочных смесительных установок, 12 терминалов, и 26 единиц поставки аэропорта.";
    
    $foo = mb_substr($var,0,142, "utf-8");
    

    Here's the php docs:

    http://php.net/manual/en/book.mbstring.php