- Php строка в нижнему регистру
- Обращение к символам строки
- Специальные функции и расширение mbstring
- Функции strpos() и mb_strpos()
- Функция strrpos()
- Функция trim()
- Изменение регистра
- Функция strlen()
- Получение подстроки
- Замена подстрок
- mb_strtolower
- Список параметров
- Возвращаемые значения
- Юникод
- Примеры
- Смотрите также
- mb_strtolower
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 6 notes
Php строка в нижнему регистру
Строки играют большую роль, задачи на парсинг строк довольно часто встречаются в PHP , поэтому рассмотрим некоторые базовые функции работы со строками.
Строки представляют некоторый текст, который заключен в одинарные или двойные кавычки:
$str1 = "Hello"; $str2 = 'Welcome';
Но также PHP позволяет определить строку и без кавычек с помощью оператора
В данном случае «LABEL» — это название метки, которая указывает на начало и конец строки. Название метки произвольное. То есть все, что расположено между
И в данном случае, как и в обычной строке мы можем использовать переменные:
Обращение к символам строки
PHP позволяет обращаться к отдельным символам строки как к элементам массива по числовому индексу:
$str = "Hello Tom"; echo $str[0];// получим первый символ - H $str[1] = "i"; // поменяем второй символ echo "
" . $str . "
"; // Hillo Tom
Индексация символов, как и в массиве, начинается с нуля.
Специальные функции и расширение mbstring
Кроме некоторых базовых возможностей по работе со строками PHP также предоставляет ряд специальных функций. Для некоторых из них требуется подключить специальное расширение — mbstring.dll . Для подключения этого расширения откроем файл конфигурации PHP — php.ini и найдем в нем следующую строку:
Раскомментируем ее, убрав точку с запятой.
Также убедимся, что у нас указан путь к папке расширений.
Найдем в файле php.ini строку:
Эта строка указывает на каталог с подключаемыми расширениями для PHP. По умолчанию все расширения располагаются в папке ext . Раскомментируем эту строку, убрав точку с запятой, и укажем полный путь к папке ext . Так, в моем случае папка c php расположена в корне диска C (ОС Windows), соответственно я указываю путь «C:\php\ext»:
И так как у нас файл php.ini изменился, перезапустим веб-сервер Apache.
Подключение расширения mbstring позволит задействовать некоторые дополнительные функции для работы со строками, которые в стандартном наборе PHP отсутствуют (такие функции обычно начинаются с префикса mb_ ).
Функции strpos() и mb_strpos()
Функция strpos($str, $search) возвращает позицию подстроки или символа $search в строке $str или значение false , если строка $str не содержит подстроки $search:
$input = «This is the end»; $search = «is»; $position = strpos($input, $search); // 2 if($position!==false)
При использовании этой функции надо учитывать, что индексация символов в строке начинается с нуля, поэтому позиция символа «T» будет равна 0. Поэтому сравнение $position!=false будет работать некорректно, ведь false и 0 при сравнении и приведении к общему типу будут представлять одно и то же значение. Поэтому в данном случае корректно использовать только операцию эквивалентности: $position!==false или $position===false .
Теперь применим функцию на другом примере:
$input = "Мама мыла раму"; $search = "мы"; $position = strpos($input, $search); // 9
Неожиданно, но результатом функции будет число 9. Хотя мы видим, что истинная позиция подстроки «мы» в исходной строке равна 5.
Все дело в том, что некоторые строковые функции не всегда корректно обрабатывают кириллические символы, и для них лучше использовать другую функцию — mb_strpos() :
$position = mb_strpos($input, $search); // 5
Функция strrpos()
Функция strrpos() во многом аналогична функции strpos() , только ищет позицию не первого, а последнего вхождения подстроки в строку:
$input = "This is the end"; $search = "is"; $position = strrpos($input, $search); // 5
Но опять же данная функция не совсем корректно работает с кириллическими символами, поэтому нам надо использовать ее аналог — mb_strrpos() :
$position = mb_strrpos($input, $search);
Функция trim()
Функция trim($str) удаляет из строки начальные и конечные пробелы, а также управляющие символы \n, \r, \t:
$input = " Мама мыла раму "; $input = trim($input);
Изменение регистра
Для перевода строки в нижний регистр используется функция strtolower :
$input = "The World is Mine"; $input = strtolower($input);
Для перевода в нижний регистр строки с кириллическими символами можно использовать функцию mb_strtolower :
$input = mb_strtolower($input);
Для перевода строки в верхний регистр примеяются функции strtoupper() / mb_ strtoupper() , которые работают аналогично.
Функция strlen()
Функция strlen() возвращает длину строки, то есть количество символов в ней:
$input = "Hello world"; $num = strlen($input); echo $num;
Функция strlen() также некорректно работает с кириллицей, поэтому в этом случае лучше применять функцию mb_strlen() :
$input = "Мама мыла раму"; $num = mb_strlen($input); echo $num;
Получение подстроки
Применяя функцию substr($str, $start [, $length]) , можно получить из одной строки ее определенную часть. Данная функция обрезает строку $str, начиная c символа в позиции $start до конца строки. С помощью дополнительного необязательного параметра $length можно задать количество вырезаемых символов.
$input = "The world is mine!"; $subinput1 = substr($input, 2); $subinput2 = substr($input, 2, 6); echo $subinput1; echo "
"; echo $subinput2;
Так как данная функция некорректно работает с кириллицей, то вместо нее следует применять функцию mb_substr() , которая действует аналогично:
$input = "Мама мыла раму"; $subinput1 = mb_substr($input, 2); $subinput2 = mb_substr($input, 2, 6);
Замена подстрок
Для замены определенной части строки применяется функция str_replace($old, $new, $input) . Эта функция заменяет в строке $input все вхождения подстроки $old на подстроку $new с учетом регистра:
$input = "Мама мыла раму"; $input = str_replace("мы", "ши", $input); echo $input;
mb_strtolower
Возвращает строку str , буквенные символы в которой приведены к нижнему регистру.
Список параметров
Параметр encoding представляет собой символьную кодировку. Если он опущен, вместо него будет использовано значение внутренней кодировки.
Возвращаемые значения
str , буквы в которой приведены к нижнему регистру.
Юникод
За дополнительной информацией о свойствах Юникода обращайтесь в » http://www.unicode.org/unicode/reports/tr21/.
В отличие от strtolower() , то что символ является буквой определяется на основании свойств символа Юникода. Таким образом на поведение функции не влияют региональные настройки системы, а также функция может преобразовывать символы, имеющие буквенные особенности, такие как А-умляут (Ä).
Примеры
Пример #1 Пример использования mb_strtolower()
$str = «У Мэри Был Маленький Ягненок и Она Его Очень ЛЮБИЛА» ;
$str = mb_strtolower ( $str );
echo $str ; // Выведет у мэри был маленький ягненок и она его очень любила
?>?php
Пример #2 Пример использования mb_strtolower() с нелатинскими буквами
$str = «Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός» ;
$str = mb_strtolower ( $str , ‘UTF-8’ );
echo $str ; // Выведет τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός
?>?php
Смотрите также
- mb_strtoupper() — Приведение строки к верхнему регистру
- mb_convert_case() — Производит смену регистра символов в строке
- strtolower() — Преобразует строку в нижний регистр
mb_strtolower
Возвращает строку string , буквенные символы в которой приведены к нижнему регистру.
Список параметров
Параметр encoding представляет собой символьную кодировку. Если он опущен или равен null , вместо него будет использовано значение внутренней кодировки.
Возвращаемые значения
str , буквы в которой приведены к нижнему регистру.
Примеры
Пример #1 Пример использования mb_strtolower()
$str = «У Мэри Был Маленький Ягнёнок и Она Его Очень ЛЮБИЛА» ;
$str = mb_strtolower ( $str );
echo $str ; // Выведет у мэри был маленький ягнёнок и она его очень любила
?>?php
Пример #2 Пример использования mb_strtolower() с нелатинскими буквами
$str = «Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός» ;
$str = mb_strtolower ( $str , ‘UTF-8’ );
echo $str ; // Выведет τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός
?>?php
Примечания
В отличие от strtolower() , то что символ является буквой определяется на основании свойств символа Юникода. Таким образом на поведение функции не влияют региональные настройки системы, а также функция может преобразовывать символы, имеющие буквенные особенности, такие как а-умляут (ä).
За дополнительной информацией о свойствах Юникода обращайтесь в » http://www.unicode.org/reports/tr21/.
Смотрите также
- mb_strtoupper() — Приведение строки к верхнему регистру
- mb_convert_case() — Производит смену регистра символов в строке
- strtolower() — Преобразует строку в нижний регистр
User Contributed Notes 6 notes
Please, note that when using with UTF-8 mb_strtolower will only convert upper case characters to lower case which are marked with the Unicode property «Upper case letter» («Lu»). However, there are also letters such as «Letter numbers» (Unicode property «Nl») that also have lower case and upper case variants. These characters will not be converted be mb_strtolower!
Example:
The Roman letters Ⅰ, Ⅱ, Ⅲ, . Ⅿ (UTF-8 code points 8544 through 8559) also exist in their respective lower case variants ⅰ, ⅱ, ⅲ, . ⅿ (UTF-8 code points 8560 through 8575) and should, in my opinion, also be converted by mb_strtolower, but they are not!
Big internet-companies (like Google) do match both variants as semantically equal (since the representations only differ in case).
Since I was not finding any proper solution in the internet on how to map all UTF8-strings to their lowercase counterpart in PHP, I offer the following hard-coded extended mb_strtolower function for UTF-8 strings:
The function wraps the existing function mb_strtolower() and additionally replaces uppercase UTF8-characters for which there is a lowercase representation. Since there is no proper Unicode uppercase and lowercase character-table in the internet that I was able to find, I checked the first million UTF8-characters against the Google-search and -KeywordTool and identified the following 78 characters as uppercase-characters, not being replaced by mb_strtolower, but having a UTF8 lowercase counterpart.
//the numbers in the in-line-comments display the characters’ Unicode code-points (CP).
function strtolower_utf8_extended ( $utf8_string )
<
$additional_replacements = array
( «Dž» => «dž» // 453 -> 454
, «Lj» => «lj» // 456 -> 457
, «Nj» => «nj» // 459 -> 460
, «Dz» => «dz» // 498 -> 499
, «Ϸ» => «ϸ» // 1015 -> 1016
, «Ϲ» => «ϲ» // 1017 -> 1010
, «Ϻ» => «ϻ» // 1018 -> 1019
, «ᾈ» => «ᾀ» // 8072 -> 8064
, «ᾉ» => «ᾁ» // 8073 -> 8065
, «ᾊ» => «ᾂ» // 8074 -> 8066
, «ᾋ» => «ᾃ» // 8075 -> 8067
, «ᾌ» => «ᾄ» // 8076 -> 8068
, «ᾍ» => «ᾅ» // 8077 -> 8069
, «ᾎ» => «ᾆ» // 8078 -> 8070
, «ᾏ» => «ᾇ» // 8079 -> 8071
, «ᾘ» => «ᾐ» // 8088 -> 8080
, «ᾙ» => «ᾑ» // 8089 -> 8081
, «ᾚ» => «ᾒ» // 8090 -> 8082
, «ᾛ» => «ᾓ» // 8091 -> 8083
, «ᾜ» => «ᾔ» // 8092 -> 8084
, «ᾝ» => «ᾕ» // 8093 -> 8085
, «ᾞ» => «ᾖ» // 8094 -> 8086
, «ᾟ» => «ᾗ» // 8095 -> 8087
, «ᾨ» => «ᾠ» // 8104 -> 8096
, «ᾩ» => «ᾡ» // 8105 -> 8097
, «ᾪ» => «ᾢ» // 8106 -> 8098
, «ᾫ» => «ᾣ» // 8107 -> 8099
, «ᾬ» => «ᾤ» // 8108 -> 8100
, «ᾭ» => «ᾥ» // 8109 -> 8101
, «ᾮ» => «ᾦ» // 8110 -> 8102
, «ᾯ» => «ᾧ» // 8111 -> 8103
, «ᾼ» => «ᾳ» // 8124 -> 8115
, «ῌ» => «ῃ» // 8140 -> 8131
, «ῼ» => «ῳ» // 8188 -> 8179
, «Ⅰ» => «ⅰ» // 8544 -> 8560
, «Ⅱ» => «ⅱ» // 8545 -> 8561
, «Ⅲ» => «ⅲ» // 8546 -> 8562
, «Ⅳ» => «ⅳ» // 8547 -> 8563
, «Ⅴ» => «ⅴ» // 8548 -> 8564
, «Ⅵ» => «ⅵ» // 8549 -> 8565
, «Ⅶ» => «ⅶ» // 8550 -> 8566
, «Ⅷ» => «ⅷ» // 8551 -> 8567
, «Ⅸ» => «ⅸ» // 8552 -> 8568
, «Ⅹ» => «ⅹ» // 8553 -> 8569
, «Ⅺ» => «ⅺ» // 8554 -> 8570
, «Ⅻ» => «ⅻ» // 8555 -> 8571
, «Ⅼ» => «ⅼ» // 8556 -> 8572
, «Ⅽ» => «ⅽ» // 8557 -> 8573
, «Ⅾ» => «ⅾ» // 8558 -> 8574
, «Ⅿ» => «ⅿ» // 8559 -> 8575
, «Ⓐ» => «ⓐ» // 9398 -> 9424
, «Ⓑ» => «ⓑ» // 9399 -> 9425
, «Ⓒ» => «ⓒ» // 9400 -> 9426
, «Ⓓ» => «ⓓ» // 9401 -> 9427
, «Ⓔ» => «ⓔ» // 9402 -> 9428
, «Ⓕ» => «ⓕ» // 9403 -> 9429
, «Ⓖ» => «ⓖ» // 9404 -> 9430
, «Ⓗ» => «ⓗ» // 9405 -> 9431
, «Ⓘ» => «ⓘ» // 9406 -> 9432
, «Ⓙ» => «ⓙ» // 9407 -> 9433
, «Ⓚ» => «ⓚ» // 9408 -> 9434
, «Ⓛ» => «ⓛ» // 9409 -> 9435
, «Ⓜ» => «ⓜ» // 9410 -> 9436
, «Ⓝ» => «ⓝ» // 9411 -> 9437
, «Ⓞ» => «ⓞ» // 9412 -> 9438
, «Ⓟ» => «ⓟ» // 9413 -> 9439
, «Ⓠ» => «ⓠ» // 9414 -> 9440
, «Ⓡ» => «ⓡ» // 9415 -> 9441
, «Ⓢ» => «ⓢ» // 9416 -> 9442
, «Ⓣ» => «ⓣ» // 9417 -> 9443
, «Ⓤ» => «ⓤ» // 9418 -> 9444
, «Ⓥ» => «ⓥ» // 9419 -> 9445
, «Ⓦ» => «ⓦ» // 9420 -> 9446
, «Ⓧ» => «ⓧ» // 9421 -> 9447
, «Ⓨ» => «ⓨ» // 9422 -> 9448
, «Ⓩ» => «ⓩ» // 9423 -> 9449
, «𐐦» => «𐑎» // 66598 -> 66638
, «𐐧» => «𐑏» // 66599 -> 66639
);
$utf8_string = mb_strtolower ( $utf8_string , «UTF-8» );
$utf8_string = strtr ( $utf8_string , $additional_replacements );
return $utf8_string ;
> //strtolower_utf8_extended()