Вот простой код
<?php $var = "Бензин Офиси А.С. также производит все типы жира и смазок и их побочных продуктов в его смесительных установках нефти машинного масла в Деринце, Измите, Алиага и Измире. У Компании есть 3 885 станций технического обслуживания, включая сжиженный газ (ЛПГ) станции под фирменным знаком Петрогаз, приблизительно 5 000 дилеров, двух смазочных смесительных установок, 12 терминалов, и 26 единиц поставки аэропорта."; $foo = substr($var,0,142); echo $foo; ?>
и он выводит что-то вроде этого:
Бензин Офиси А.С. также производит все виды жира и смазок и их побочных продук …
Я пробовал mb_substr () без везения. Как это сделать правильно?
Вышеуказанные комментарии верны, если на вашем сервере включена поддержка mbstring.
$var = "Бензин Офиси А.С. также производит все типы жира и смазок и их побочных продуктов в его смесительных установках нефти машинного масла в Деринце, Измите, Алиага и Измире. У Компании есть 3 885 станций технического обслуживания, включая сжиженный газ (ЛПГ) станции под фирменным знаком Петрогаз, приблизительно 5 000 дилеров, двух смазочных смесительных установок, 12 терминалов, и 26 единиц поставки аэропорта."; $foo = mb_substr($var,0,142, "utf-8");
Вот php docs:
Правильная (логическая) альтернатива для строк unicode;
<?php function substr_unicode($str, $s, $l = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l)); } $str = "Büyük"; $s = 0; // start from "0" (nth) char $l = 3; // get "3" chars echo substr($str, $s, $l) ."\n"; // Bü echo mb_substr($str, $s, $l) ."\n"; // Bü echo substr_unicode($str, $s, $l); // Büy ?>
Использование PHP: mb_substr – Manual
PHP5 не понимает UTF-8 изначально. Он предлагается для PHP6, если он когда-либо появится.
Используйте многобайтовые строковые функции для безопасного управления строками UTF-8.
Например, mb_substr()
в вашем случае.
Никогда не используйте константу в функции substr для строки UTF-8: $ st = substr ($ text, $ beg, 100); 50% шанс, что вы получите половину символа в конце строки)
Сделайте так:
$postion_degin = strpos($text, $first_symbol); $postion_end = strpos($text, $last_symbol); $len = $postion_end - $postion_degin +1; $st = substr($text, $postion_degin, $len);
Результат 100%
Нет mb_substr
Надеюсь, это решение поможет вам, поскольку это очень помогло мне.
<?php if(mb_strlen($post->post_content,'UTF-8')>200){ $content= str_replace('\n', '', mb_substr(strip_tags($post-> post_content), 0, 200,'UTF-8')); echo $content.'…'; }else{ echo str_replace('\n', '', strip_tags($post->post_content)); } ?>