Памятка для работы со строками
Довольно часто у меня нет доступа к настройкам php или моё вмешательсво может привести к проблемам. Бывает забудишь, что, реботая со строками (в частности
в кодировке utf8
), нужно обязательно использовать мультибайтовые функции (mb_...), чотбы не получилось, что длина строки "Строка" не 6 символов, а 12.
Не то что бы я этого не знала... но захотелось для нагляжности создать скрипт.
<?php
Если в настройках не верно указаны настройки, то может получиться так
Не то что бы я этого не знала... но захотелось для нагляжности создать скрипт.
<?php
//Фокус мокус!
$var1 = 'String';
$var2 = 'Строка';
dump('$var1 = '.$var1);
dump('$var2 = '.$var2);
dump('-- ДО -------------');
dump('strlen($var1) = '.strlen($var1));
dump('strlen($var2) = '.strlen($var2));
mb_internal_encoding('utf8');
dump('-- ПОСЛЕ mb_internal_encoding(\'utf8\'); -------------');
dump('strlen($var1) = '.strlen($var1));
dump('strlen($var2) = '.strlen($var2));
dump('mb_strlen($var1) = '.mb_strlen($var1));
dump('mb_strlen($var2) = '.mb_strlen($var2));
function dump($var){
echo '<pre style="background:#fff !important; color:#505050 !important;">';
print_r($var);
echo '</pre>';
}
?>$var1 = 'String';
$var2 = 'Строка';
dump('$var1 = '.$var1);
dump('$var2 = '.$var2);
dump('-- ДО -------------');
dump('strlen($var1) = '.strlen($var1));
dump('strlen($var2) = '.strlen($var2));
mb_internal_encoding('utf8');
dump('-- ПОСЛЕ mb_internal_encoding(\'utf8\'); -------------');
dump('strlen($var1) = '.strlen($var1));
dump('strlen($var2) = '.strlen($var2));
dump('mb_strlen($var1) = '.mb_strlen($var1));
dump('mb_strlen($var2) = '.mb_strlen($var2));
function dump($var){
echo '<pre style="background:#fff !important; color:#505050 !important;">';
print_r($var);
echo '</pre>';
}
Если в настройках не верно указаны настройки, то может получиться так
$var1 = String
$var2 = Строка
-- ДО -------------
strlen($var1) = 6
strlen($var2) = 12
-- ПОСЛЕ mb_internal_encoding('utf8'); -------------
strlen($var1) = 6
strlen($var2) = 12
mb_strlen($var1) = 6
mb_strlen($var2) = 6
Комментарии
Отправить комментарий