3
У меня есть эта функция работает не совсем хорошо в PHP 5.2.0, эта функция вырезать строку в нужной длины:Как отрезать многобайтовую строку (английское слово и китайский символ) в PHP?
function neat_trim($str, $n, $delim='...')
{
$len = strlen($str);
if ($len > $n)
{
preg_match('/(.{' . $n . '}.*?)\b/', $str, $matches);
return rtrim($matches[1]) . $delim;
}
return $str;
}
И я называю
$multibyte_string = "Portion of Chicken for 1 person<br>一人份鸡肉";
echo neat_trim($multibyte_string,42) . "</br>";
будет производить
Portion of Chicken for 1 person
一人�...
К сожалению, он не будет работать на PHP-5.4.29, он будет производить:
...
Я пробовал this и this, но не работал. Пожалуйста помоги.
Если это * UTF-8 * 1.) '$ LEN = StrLen ($ НТР);' использовать 'mb_strlen ($ ул , "utf-8"); 'длина символа ** 40 ** не ** 50 ** [расширение mbstring] (http://php.net/manual/en/book.mbstring.php). 2.) Если это юникод, используйте 'u' [flag] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php) и, возможно, также' '' flag в вашем регулярном выражении для создания точка также соответствует новостям: ''/(. {'. $ n.'}. *?) \ b/us'' –
Спасибо @Jonny, ваш комментарий действительно мне помогает. Я новичок в работе с несколькими символами в PHP. Я опубликовал свой рабочий код. –
Ответы идут в окне ответа ниже, а не в вопросе. –