У меня есть веб-сайт wordpress.
Я создал простой шаблон страницы, например:
<?php /** * Template Name: Test */ echo strlen('Привет'); ?>
Затем я создал страницу, используя этот шаблон. На странице показана длина русской строки «Привет» (означает «Hello»). Я ожидаю увидеть 12, поскольку кодированная русская строка UTF-8, состоящая из 6 символов, должна иметь размер 12 байт, но вместо этого я получаю 6.
Я тестировал то же самое на другом сервере и имел правильное значение – 12. Поэтому я считаю, что причиной является конфигурация моего сервера. У меня есть wp 3.2.1 (у меня была такая же проблема после обновления до wp 3.5.1) и PHP 5.3.3.
В настоящее время я потратил около 5 дней, пытаясь найти решение, но не повезло. Кто-нибудь знает, в чем причина такого поведения?
Проверьте параметр mbstring.func_overload в php.ini
. Эта опция позволяет PHP переопределять функцию strlen () с помощью mb_strlen () (и аналогично для других эквивалентов). Это может объяснить несоответствие между вашими серверами
РЕДАКТИРОВАТЬ
Цитата из ссылки doc:
Чтобы использовать перегрузку функций, установите mbstring.func_overload в php.ini в положительное значение, представляющее комбинацию битмасок с указанием категорий перегружаемых функций. Он должен быть установлен в 1 для перегрузки функции mail (). 2 для строковых функций, 4 для функций регулярного выражения. Например, если установлено значение 7, функции пересылки почты, строк и регулярных выражений будут перегружены.
Таким образом, значение с 2 bit
набором означает, что основные строковые функции будут перегружены с их эквивалентом mbstring, но не функциями почты или регулярного выражения; если вы хотите normal
поведения, это должно быть 0
Вы пробовали: http://lt.php.net/manual/en/function.mb-strlen.php ?
int mb_strlen ( string $str [, string $encoding ] ) Gets the length of a string.
Вам нужно использовать многобайтовые строковые функции для этого? Например, http://www.php.net/manual/en/function.mb-strlen.php
См. http://php.net/manual/en/function.mb-strlen.php для получения дополнительной информации о получении длины строки в многобайтовых символах.