Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Str lower php

Strtolower php Использование strtolower, не работает для кириллицы , примеры

Сегодня разберем функцию strtolower, которая преобразует строку в нижний регистр. Т.е. все буквы делает строчными в php. Попробуем разобраться в ошибках связанных с функцией strtolower, примеры strtolower, напишем свою функцию для кириллицы преобразующие большие буквы в маленькие, но не только о strtolower, но и коснемся mb-strtolower.

Естественно нужно начать с определения даннйо функции:

Все о функции strtolower

  1. Что такое strtolower
  2. Использование strtolower:
  3. Использование strtolower для латиницы:
  4. Использование strtolower для кириллицы:
  5. Strtolower не работает для кириллицы
  6. Собственная функция Strtolower для кириллицы!
  7. Собственная функция Strtolower для кириллицы и латиницы!
  8. Онлайн функция Strtolower для текста!
  9. Скачать можно здесь

    Что такое strtolower

    Функция strtolower возвращает строку, в которой все буквы приведены в нижний регистр

    Использование strtolower:

    Самое удобное, поместить в переменную текст, который пропускается через функцию и получается соответствующая строка.

    Ну и далее оборачиваем переменную функцией strtolower:

    Использование strtolower для латиницы:

    Возьмем наш текст, который мы уже видели выше, и который написан на английском и пропустим его через strtolower, вообще функция по умолчанию работает с латиницей пример:

    THIS IS A TEST TEXT THAT WILL ILLUSTRATE THE BEHAVIOR OF THE STROLLOVER

    Давайте её пропустим через функцию strtolower и получим:

    this is a test text that will illustrate the behavior of the strollover

    Использование strtolower для кириллицы:

    К сожалению, strtolower не работает для кириллицы и выдает такой результат:

    ЭТО ТЕСТОВЫЙ ТЕКСТ, КОТОРЫЙ БУДЕТ ИЛЛЮСТРИРОВАТЬ ПОВЕДЕНИЕ СТРОЛЛОВЕР

    Мы видим, что ничего у нас не произошло…

    Насколько я понимаю, что проблема в данном случае с кодировкой utf-8 для кириллицы! Дело в том, что кириллица в данной кодировке имеет не один символ а два. и strtolower просто не понимает, что от него хотят.

    Чтобы показать в живую, чем отличается кириллица от латиницы:

    Strtolower не работает для кириллицы

    Но если например мы будем использовать данную функцию в таком виде:

    То получим такой результат:

    ��� �������� �����, ������� ����� �������������� ��������� ���������� Чтобы mb_strtolower заработала с кириллицей UTF-8 ей нужно придать кодировку, таким образом:

    Смотрим, что у нас в итоге получилось:

    это тестовый текст, который будет иллюстрировать поведение стролловер

    Собственная функция Strtolower для кириллицы!

    Сталкивались с Strtolower для кириллицы!? Или может вы использовали mb-strtolower для кириллицы!? Эти функции работали и как впечатление!?

    Когда в последний раз меня вывела из себя функция mb-strtolower – оказывается – эту хрень еще и подключать надо! Какая важная фифа, что она может даже быть и отключенная! Не то, что я не могу разобраться, как её включить – но просто это так достало, что просто нет тех слов цензурных слов, которые могли бы выразить все то, что я им хочу сказать!

    Сделаем собственную функцию Strtolower для кириллицы!

    Нам нужна такая функция Strtolower для кириллицы, чтобы она работала всегда и везде и чтобы больше никогда я не встречался с этой проблемой – мы просто напишем собственную функцию Strtolower для кириллицы!

    Нам понадобится массив, который представляет из себя ключ – Большая кириллическая буква(верхний регистр = «ПРОПИСНЫЕ»), значение маленькая кириллическая буква(нижний регистр = «строчные»)

    Еще нам понадобится функция strtr – которая преобразует найденные ключи в значения!

    2). Поместим наш тестовый текст с прописными буквами в переменную

    И обработаем дальше уже нашей функцией Strtolower для кириллицы

    Результат работы собственной функции для кириллицы!

    Собственная функция Strtolower для кириллицы и латиницы![h1]

    Пойдем дальше! Чем каждый раз вспоминать,какая функция работает там, работает сям! Сделаем функцию для кириллицы и латиницы, дарю:

    Теперь давайте испытаем, сразу на двух текстах. что мы сделаем!?

    Выведем наши текста таикм образом:

    Результат работы собственной функции strollower

    Онлайн функция Strtolower для текста!

    Теперь на нашем сайте вы можете привести весь текст, который так или иначе написан с включением больших(прописных) букв, превратить в текст написанный строчными, т.е. маленькими!

    Как работает онлайн Strtolower

    В поле ввода пишем или вставляем текст ПРОПИСНЫМИ! И нажимаем отправить! И вы получите результат! Пока только Русский и английский языки!

    Вас может еще заинтересовать список тем : #PHP | #PHP_FUNCTION |

    НАШИ ПРОЕКТЫ : Проекты находятся в разной степени готовности (просто их столько, что времени не хватает…)

    strtolower

    (PHP 4, PHP 5, PHP 7)

    strtolower — Преобразует строку в нижний регистр

    Описание

    Возвращает строку string , в которой все буквенные символы переведены в нижний регистр.

    Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C», символ Ä не будет преобразован.

    Список параметров

    Возвращаемые значения

    Возвращает строку в нижнем регистре.

    Примеры

    Пример #1 Пример использования strtolower()

    Примечания

    Замечание: Эта функция безопасна для обработки данных в двоичной форме.

    Смотрите также

    • strtoupper() — Преобразует строку в верхний регистр
    • ucfirst() — Преобразует первый символ строки в верхний регистр
    • ucwords() — Преобразует в верхний регистр первый символ каждого слова в строке
    • mb_strtolower() — Приведение строки к нижнему регистру

    User Contributed Notes 16 notes

    strtolower(); doesn’t work for polish chars

    ( «mĄkA» ); ?>
    will return: mĄka;

    the best solution — use mb_strtolower()

    ( «mĄkA» , ‘UTF-8’ ); ?>
    will return: mąka

    for cyrillic and UTF 8 use mb_convert_case

    = «Австралия» ;
    $string = mb_convert_case ( $string , MB_CASE_LOWER , «UTF-8» );
    echo $string ;

    //output is: австралия
    ?>

    the function arraytolower will create duplicate entries since keys are case sensitive.

    = array( ‘test1’ => ‘asgAFasDAAd’ , ‘TEST2’ => ‘ASddhshsDGb’ , ‘TeSt3 ‘ => ‘asdasda@asdadadASDASDgh’ );

    $array = arraytolower ( $array );
    ?>
    /*
    Array
    (
    [test1] => asgafasdaad
    [TEST2] => ASddhshsDGb
    [TeSt3] => asdasda@asdadadASDASDgh
    [test2] => asddhshsdgb
    [test3] => asdasda@asdadadasdasdgh
    )
    */

    I prefer this method

    function arraytolower ( $array , $include_leys = false ) <

    if( $include_leys ) <
    foreach( $array as $key => $value ) <
    if( is_array ( $value ))
    $array2 [ strtolower ( $key )] = arraytolower ( $value , $include_leys );
    else
    $array2 [ strtolower ( $key )] = strtolower ( $value );
    >
    $array = $array2 ;
    >
    else <
    foreach( $array as $key => $value ) <
    if( is_array ( $value ))
    $array [ $key ] = arraytolower ( $value , $include_leys );
    else
    $array [ $key ] = strtolower ( $value );
    >
    >

    return $array ;
    >
    ?>

    which when used like this

    = $array = array( ‘test1’ => ‘asgAFasDAAd’ , ‘TEST2’ => ‘ASddhshsDGb’ , ‘TeSt3 ‘ => ‘asdasda@asdadadASDASDgh’ );

    $array1 = arraytolower ( $array );
    $array2 = arraytolower ( $array , true );

    print_r ( $array1 );
    print_r ( $array2 );
    ?>

    will give output of

    Array
    (
    [test1] => asgafasdaad
    [TEST2] => asddhshsdgb
    [TeSt3] => asdasda@asdadadasdasdgh
    )
    Array
    (
    [test1] => asgafasdaad
    [test2] => asddhshsdgb
    [test3] => asdasda@asdadadasdasdgh
    )

    function fullLower ( $str ) <
    // convert to entities
    $subject = htmlentities ( $str , ENT_QUOTES );
    $pattern = ‘/&([a-z])(uml|acute|circ’ ;
    $pattern .= ‘|tilde|ring|elig|grave|slash|horn|cedil|th);/e’ ;
    $replace = «‘&’.strtolower(‘\1′).’\2′.’;'» ;
    $result = preg_replace ( $pattern , $replace , $subject );
    // convert from entities back to characters
    $htmltable = get_html_translation_table ( HTML_ENTITIES );
    foreach( $htmltable as $key => $value ) <
    $result = ereg_replace ( addslashes ( $value ), $key , $result );
    >
    return( strtolower ( $result ));
    >

    echo fullLower ( «Ã É Ò Õ ÚÙÛ» );

    //results ã é ò õ úùû
    //adapted from fullUpper on strtoupper manual
    ?>

    When you’re not sure, how the current locale is set, you might find the following function useful. It’s strtolower for utf8-formatted text:

    function strtolower_utf8 ( $inputString ) <
    $outputString = utf8_decode ( $inputString );
    $outputString = strtolower ( $outputString );
    $outputString = utf8_encode ( $outputString );
    return $outputString ;
    >
    ?>

    It’s not suitable for every occasion, but it surely gets in handy. I use it for lowering German ‘Umlauts’ like ä and ö.

    function strtolower_slovenian ( $string )
    <
    $low =array( «Č» => «č» , «Ž» => «ž» , «Š» => «š» );
    return strtolower ( strtr ( $string , $low ));
    >

    Строковые функции в PHP

    Строки — это один из основных типов переменных в PHP. И с ними приходится работать наравне с числами, с булевскими переменными и массивами. Разумеется, разработчики PHP, чтобы облегчить нам работу со строками, уже встроили много готовых функций для нас. И о самых часто используемых мы и поговорим.

    Начнём с функции, которую я использую при работе со строками в PHP регулярно — strlen(). Данная функция возвращает длину строки (количество символов в строке):

    Думаю, что данная функция в комментариях не нуждается.

    Также имеются две часто используемые строковые функции — это strtolower() и strtoupper(). Эти функции позволяют перевести строку в нижний и верхний регистр соответственно:

    Очень полезная строковая функция — substr(), которая возвращает подстроку из исходной строки:

    Как видите, данная функция может содержать два, либо три параметра. Первый параметр — это исходная строка, второй параметр — это номер символа в исходной строке, который потом станет первым в полученной строке. Обратите внимание: нумерация символов начинается с 0 (то есть в нашем примере, 1-ый символ — «h«). Третий параметр означает длину строки, которую мы хотим получить. Если этот параметр не задан, то возвращается строка, начиная со второго параметра и до конца строки. В общем, смотрите на результат, и Вам всё станет ясно.

    Ещё одна полезная строковая функция в PHP — это str_replace(). Как следует из названия, данная функция возвращает строку с заменой какой-то части:

    На выходе у нас получилась следующая строка: «This is your string«. То есть данная функция заменила строку, заданную первым параметром, на строку, заданную вторым параметром, в строке, заданной третьим параметром, и вернула результат.

    И последняя функция, которую мы с Вами рассмотрим, — это strpos(). Данная функция ищет вхождение подстроки в строку и возвращает номер первого символа вхождения (напоминаю, что нумерация символов начинается с 0, а не с 1):

    Как видите, данная функция очень простая и очень важная, так как позволяет осуществлять поиск в строке. Также у функции strpos() есть ещё один необязательный параметр, задающий смещение. Напоминаю, что данная функция ищет первое вхождение. Например, в нашем примере «is» встречается в строке дважды, но вернула эта функция номер символа при первом вхождении. Поэтому для того, чтобы получить номера и других вхождений необходимо задавать третий параметр — смещение:

    Таким образом, теперь мы получили номер символа в следующем вхождении. И, напоследок, хочется сказать, что если вхождение не будет найдено, то функция вернёт false. И вот на этом моменте у многих бывают ошибки. Давайте приведу простой пример:

    Очевидно, что «Th» содержится в исходной строке, и номер символа первого вхождения — это . Но если Вы запустите этот скрипт, то увидите, что «строка не найдена«. Почему? Если Вы читали статью об операторе эквивалентности, то без проблем ответите на этот вопрос. Однако, если нет, то поясняю. Дело в том, что так как у нас функция strpos() вернула , а с точки зрения PHP — это false, то он без проблем сделал вывод о том, что условие истинно (ведь слева false и справа false). Как быть? Ответ прост: воспользоваться оператором эквивалентности (обозначается ===), который сравнивает не только значения (которые в нашем примере равны для PHP), но и их типы:

    И вот теперь Вы увидите, что «строка найдена«. Как видите, оператор эквивалентности может заявить о себе в любую минуту, и всегда нужно о нём помнить, иначе Вам не избежать труднодоступных ошибок.

    Конечно, это далеко не весь набор строковых функций, которые нам предоставили разработчики PHP, но я, исходя из своей практики, привёл Вам список самых часто используемых строковых функций в PHP.

    Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    Она выглядит вот так:

  1. BB-код ссылки для форумов (например, можете поставить её в подписи):
Читать еще:  Application php joomla

Комментарии ( 17 ):

Здравствуйте, Михаил. Подскажите пожалуйста по поводу последнего примера, почему не работает такой пример: $str = «This is my string»; if (strpos($str, «Th») === true) echo «Строка найдена»; else echo «Строка не найдена»;

Потому что strpos возвращает число, а если ничего не найдено, то false.

Не поняла пример со смещением. Как его задать и при чем здесь 4?

Смещение на x «переносит» начало строки для функции (но не в реальности), поиск будет начинаться не с 0-го, а с х-го символа

Здравствуйте, Михаил! Функция echo «chr($i)» при $i = от 128 до 255 выводит вопросики�. Кодировка всех файлов UTF-8. Запускаю через денвер. В вашем же уроке аналогичная программа выводит русские буквы. Что можно сделать, чтобы вывести русские буквы? Спасибо!

Нашел одно объяснение: я использую файл .htaccess в корне, а в нем строка AddDefaultCharset utf-8. Если удалить файл, то chr() выводит русские символы, но вся остальная кириллица на странице превращается в кракозябры. Но, как сделать так, чтобы работало и то и другое.

Похоже, нашел решение — chr() выдает результат в своей кодировке. Необходимо просто перевести в UTF. Функция такая iconv(‘windows-1251′,’utf-8’,chr($i)). Михаил, может стоит добавить в уроки PHP хотя бы пару слов про кодировку строк.

Уважаемый Александр,по возможности,добавит P.s. что у вас за интересная ава?) зачем оба флага и оба герба?)

Михаил привет. $menu = $this->menu2->getAll(); Хочу чтоб цифра 2 менялась в зависимости от входного параметра. $menu = $this->menu.$sr_duble->getAll(); Но подобная конструкция не работает. Можно здесь что то придумать?

Что означает такая конструкция? Метод на константу?

Здравствуйте Михаил, разве функция strlen() возвращает кол.символов в строке, в справочнике по php написано что то байтовая функция и возвращает она количество байтов в строке, то есть она считает пробелы за символ.

Читать еще:  Php mysql linux

в PHP strlen() возвращает длину строки

Функция strlen() возвратит количество байт, а не число символов в строке. P.s.В справочнике написано!

вау-вау,в каком таком интересном справочнике это написано?если не секрет,конечно и это не заговор инопланетян. Можно ссылочку?) Быть может,Вы не верно уловили суть. Да,данная функция учитывает и пробелы как символ. Но опять же,она считает длину конкретной,заданной строки.Т.е.количество символов в этой строке. И да,пробел — это литера,не имеющая очертаний,т.е. невидимая А возвращает оно именно количество символов в строке. Можете проверить)

ну,тут зависимость идёт В зависимости от кодировки. Но называют именно функцией для расчёта длинны строки. Просто не всегда размер символа соответствует одному байту. И если взять другую кодировку,то да. Но это не ошибка. Хотя подмечено верно Суть не меняется от этого замечания. Да и в любом случае у Михаила просто не написано уточнение о том,что только в случае,если символы весят не более байта

Доброго времени! Мне нужна строковая функция чтобы в строке: 1. пробел(ов) заменить одним знаком «-» 2. изменить регистр в нижний, 3. удалить все знаки кроме букв и цифр. 4. и заменить все буквы на английский Если можете помогите кто нибудь пожалуйста.

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

strtolower

strtolower — Make a string lowercase

Description

Returns string with all alphabetic characters converted to lowercase.

Note that ‘alphabetic’ is determined by the current locale. This means that in i.e. the default «C» locale, characters such as umlaut-A (Ä) will not be converted.

Parameters

The input string.

Return Values

Returns the lowercased string.

Examples

Example #1 strtolower() example

Notes

See Also

  • strtoupper() — Make a string uppercase
  • ucfirst() — Make a string’s first character uppercase
  • ucwords() — Uppercase the first character of each word in a string
  • mb_strtolower() — Make a string lowercase

Коментарии

Heres a small function I wrote to stop people from submitting data that is ALL IN CAPS SO THEY CAN GET MORE ATTENTION THAT THE REST OF THE USER SUBMITTED DATA on my website 🙂 If you can make it better, by all means do so. This function splits up words delimited by a space, and makes only the first letter of each word capitalized. You can easily modify it so it’s only the very first word of the string. I’ve also added some exceptions so you don’t make things like roman numerals look like «Iii» or «Xcmii» or something.

function RemoveShouting($string)
<
$lower_exceptions = array(
«to» => «1», «a» => «1», «the» => «1», «of» => «1»
);

$higher_exceptions = array(
«I» => «1», «II» => «1», «III» => «1», «IV» => «1»,
«V» => «1», «VI» => «1», «VII» => «1», «VIII» => «1»,
«XI» => «1», «X» => «1»
);

$words = split(» «, $string);
$newwords = array();
foreach ($words as $word)
<
if (!$higher_exceptions[$word]) $word = strtolower($word);
if (!$lower_exceptions[$word]) $word[0] = strtoupper($word[0]);
array_push($newwords, $word);
>
return join(» «, $newwords);
>

To do case insensitive comparisons in a database, strtolower() can be a quick and dirty solution:

$Sql = «SELECT * FROM tablename WHERE LOWER(column_name) = ‘».strtolower($my_var).»‘»;

There’s a ucfirst «function» to make the first character uppercase, but there’s no «lcfirst» function to make the first character lowercase. Here’s my own code to accomplish this.

function lcfirst ( $str ) <
return strtolower ( substr ( $str , 0 , 1 )) . substr ( $str , 1 );
>
?>

I found this particularly useful for generating XML nodes with the Reflection class.

Читать еще:  Php pdo connect

If you’re considering using the below unhtmlentities function from phpContrib, I would suggest this one as an alternative:

function unhtmlentities ( $string )
<
// replace numeric entities
$string = preg_replace ( ‘

ei’ , ‘chr(hexdec(«\1»))’ , $string );
$string = preg_replace ( ‘

e’ , ‘chr(\1)’ , $string );
// replace literal entities
$trans_tbl = get_html_translation_table ( HTML_ENTITIES );
$trans_tbl = array_flip ( $trans_tbl );
return strtr ( $string , $trans_tbl );
>
?>

That was copied exactly from the html_entity_decode manual page. It’ll handle numeric entities correctly, the below function won’t.

If you ever need to strtolower a string with href tags on it and doesn’t want to mess with the characters inside a tag, this is for you.

function loweroutsidetags ( $str ) <
$chars = preg_split ( «//» , $str );
$tolower = true ;
$str = » ;

?>

this:
echo loweroutsidetags(‘aALalala ‘)

will give:
aalalala

Maybe it is not so elegant, but it Works.
It’s just a fast Idea and it is what I need.
Any hacks for other characters (link !, ? etc etc) should help.

function RemoveShouting($string)
<
$frase = «»;
$astri = explode(«.», $string);
foreach ($astri as $elem)
$frase .= » «.ucfirst(trim(strtolower($elem))).». «;

function strtolower_slovenian ( $string )
<
$low =array( «Č» => «č» , «Ž» => «ž» , «Š» => «š» );
return strtolower ( strtr ( $string , $low ));
>

When you’re not sure, how the current locale is set, you might find the following function useful. It’s strtolower for utf8-formatted text:

function strtolower_utf8 ( $inputString ) <
$outputString = utf8_decode ( $inputString );
$outputString = strtolower ( $outputString );
$outputString = utf8_encode ( $outputString );
return $outputString ;
>
?>

It’s not suitable for every occasion, but it surely gets in handy. I use it for lowering German ‘Umlauts’ like ä and ö.

function fullLower ( $str ) <
// convert to entities
$subject = htmlentities ( $str , ENT_QUOTES );
$pattern = ‘/&([a-z])(uml|acute|circ’ ;
$pattern .= ‘|tilde|ring|elig|grave|slash|horn|cedil|th);/e’ ;
$replace = «‘&’.strtolower(‘\1′).’\2′.’;'» ;
$result = preg_replace ( $pattern , $replace , $subject );
// convert from entities back to characters
$htmltable = get_html_translation_table ( HTML_ENTITIES );
foreach( $htmltable as $key => $value ) <
$result = ereg_replace ( addslashes ( $value ), $key , $result );
>
return( strtolower ( $result ));
>

echo fullLower ( «Ã É Ò Õ ÚÙÛ» );

//results ã é ò õ úùû
//adapted from fullUpper on strtoupper manual
?>

the function arraytolower will create duplicate entries since keys are case sensitive.

= array( ‘test1’ => ‘asgAFasDAAd’ , ‘TEST2’ => ‘ASddhshsDGb’ , ‘TeSt3 ‘ => ‘asdasda@asdadadASDASDgh’ );

$array = arraytolower ( $array );
?>
/*
Array
(
[test1] => asgafasdaad
[TEST2] => ASddhshsDGb
[TeSt3] => asdasda@asdadadASDASDgh
[test2] => asddhshsdgb
[test3] => asdasda@asdadadasdasdgh
)
*/

I prefer this method

function arraytolower ( $array , $include_leys = false ) <

if( $include_leys ) <
foreach( $array as $key => $value ) <
if( is_array ( $value ))
$array2 [ strtolower ( $key )] = arraytolower ( $value , $include_leys );
else
$array2 [ strtolower ( $key )] = strtolower ( $value );
>
$array = $array2 ;
>
else <
foreach( $array as $key => $value ) <
if( is_array ( $value ))
$array [ $key ] = arraytolower ( $value , $include_leys );
else
$array [ $key ] = strtolower ( $value );
>
>

return $array ;
>
?>

which when used like this

= $array = array( ‘test1’ => ‘asgAFasDAAd’ , ‘TEST2’ => ‘ASddhshsDGb’ , ‘TeSt3 ‘ => ‘asdasda@asdadadASDASDgh’ );

$array1 = arraytolower ( $array );
$array2 = arraytolower ( $array , true );

print_r ( $array1 );
print_r ( $array2 );
?>

will give output of

Array
(
[test1] => asgafasdaad
[TEST2] => asddhshsdgb
[TeSt3] => asdasda@asdadadasdasdgh
)
Array
(
[test1] => asgafasdaad
[test2] => asddhshsdgb
[test3] => asdasda@asdadadasdasdgh
)

for cyrillic and UTF 8 use mb_convert_case

= «Австралия» ;
$string = mb_convert_case ( $string , MB_CASE_LOWER , «UTF-8» );
echo $string ;

//output is: австралия
?>

the strtolower version to support most amount of languages including russian, french and so on:

function strtolower_utf8 ( $string ) <
$convert_to = array(
«a» , «b» , «c» , «d» , «e» , «f» , «g» , «h» , «i» , «j» , «k» , «l» , «m» , «n» , «o» , «p» , «q» , «r» , «s» , «t» , «u» ,
«v» , «w» , «x» , «y» , «z» , «à» , «á» , «â» , «ã» , «ä» , «å» , «æ» , «ç» , «è» , «é» , «ê» , «ë» , «ì» , «í» , «î» , «ï» ,
«ð» , «ñ» , «ò» , «ó» , «ô» , «õ» , «ö» , «ø» , «ù» , «ú» , «û» , «ü» , «ý» , «а» , «б» , «в» , «г» , «д» , «е» , «ё» , «ж» ,
«з» , «и» , «й» , «к» , «л» , «м» , «н» , «о» , «п» , «р» , «с» , «т» , «у» , «ф» , «х» , «ц» , «ч» , «ш» , «щ» , «ъ» , «ы» ,
«ь» , «э» , «ю» , «я»
);
$convert_from = array(
«A» , «B» , «C» , «D» , «E» , «F» , «G» , «H» , «I» , «J» , «K» , «L» , «M» , «N» , «O» , «P» , «Q» , «R» , «S» , «T» , «U» ,
«V» , «W» , «X» , «Y» , «Z» , «À» , «Á» , «Â» , «Ã» , «Ä» , «Å» , «Æ» , «Ç» , «È» , «É» , «Ê» , «Ë» , «Ì» , «Í» , «Î» , «Ï» ,
«Ð» , «Ñ» , «Ò» , «Ó» , «Ô» , «Õ» , «Ö» , «Ø» , «Ù» , «Ú» , «Û» , «Ü» , «Ý» , «А» , «Б» , «В» , «Г» , «Д» , «Е» , «Ё» , «Ж» ,
«З» , «И» , «Й» , «К» , «Л» , «М» , «Н» , «О» , «П» , «Р» , «С» , «Т» , «У» , «Ф» , «Х» , «Ц» , «Ч» , «Ш» , «Щ» , «Ъ» , «Ъ» ,
«Ь» , «Э» , «Ю» , «Я»
);

return str_replace ( $convert_from , $convert_to , $string );
>
?>

strtolower(); doesn’t work for polish chars

( «mĄkA» ); ?>
will return: mĄka;

the best solution — use mb_strtolower()

( «mĄkA» , ‘UTF-8’ ); ?>
will return: mąka

To convert an entire array to lower, I prefer this method;

function arraytolower (array $array , $round = 0 ) <
return unserialize ( strtolower ( serialize ( $array )));
>
?>

3 lines of code seem a lot less overhead than 10-40.
If there’s any intrinsic problem with this method, please post it.

When the locale is set to «utf8» or «C» I can’t get strtolower() to convert accented characters encoded as UTF-8, so here is my workaround.

function tolower ( $string ) <
if ( $old_locale = setlocale ( LC_CTYPE , 0 )) <
// ‘fr_FR.ISO-8859-1’ for *nix, ‘French_France.1252’ fallback for Windows
if ( $newlocale = setlocale ( LC_CTYPE , ‘fr_FR.ISO-8859-1’ , ‘French_France.1252’ )) <
preg_match ( ‘/.(? .+)$/’ , $newlocale , $match );
$string = utf8_encode ( strtolower ( utf8_decode ( $string )));
>
setlocale ( LC_CTYPE , $old_locale );
>
return $string ;
>

print( tolower ( ‘DÉJÀ-VU’ )); // prints déjà-vu
?>

Change the language-country codes if you want some language other than French.

Ссылка на основную публикацию
Adblock
detector