PHP SQL
PHP SQL .ru
  Главная  Уроки  PHP  MySQL  jQuery  RegEx  CSS  Книги  Форум  
 Функции


  На главную

  Назад  Вперед

  Печать

Строку в верхний или нижний регистр

Одна из проблем РНР и MySQL заключается в том, что MySQL поддерживает поля, нечувствительные к регистру символов, но в РНР все строки чувствительны к регистру символов. В MySQL-запросе между строками Ferrett, FERRETT и FerReTt нет разницы, но в РНР между этими строками нет ничего общего. Поэтому в РНР перед сравнением строк нам нужно свести их к одному регистру. Для изменения регистра в РНР используются следующие функции: strtolower (), strtoupper () и ucwords (). Рассмотрим их в действии:

<?
$string = "heY hOw arE yoU doinG?";
echo strtoupper($string);
// Выводим "HEY HOW ARE YOU DOING?"
echo strtolower($string);
// Выводим "hey how are you doing?"
echo ucwords(strtolower($string) ) ;
// Выводим "Hey How Are You Doing?"
?>
Эти функции работают, как описано ниже:
• strtoupper () - переводит все символы строки в верхний регистр.
• strtolower () - переводит все символы строки в нижний регистр.
• ucwords () - переводит в верхний регистр только первые буквы каждого слова.

Примечание.
Обратите внимание, что перед ucwords () мы вызываем strtolower (), иначе получим результат HeY HOW ArE YOU DoinG?

Что может быть не так?

Вам нужно знать несколько особенностей функции ucwords (). Во-первых, эта функция не переводит в верхний регистр символы, не являющиеся начальными символами слова, например, в результате обработки строки «mrs. johnston-brown» получим результат «Mrs. Johnston-brown», а если передать строку «ас/dc», получим «Ас/dc».
Вторая особенность заключается в том, что функция переводит в верхний регистр некоторые слова, которые не должны быть в верхнем регистре, например and, or и а. Сейчас мы напишем простую функцию, которая использует str__replace () для исправления этих слов:

<?
function fussy_capitalize($string)   { 
//-------------------------------
$uppercase_words = array("Of ","A ","The ","And ","An “, "Or ");
$lowercase_words = array("of ","a ","the ","and ","an ","or "); 
$string = ucwords(strtolower($string));
$string = str_replace($uppercase_words,  $lowercase_words, $string); 
// Переводим в верхний регистр первое слово 
return ucfirst ($string) ;
}
?>
Помните, что при работе с именами ucwords (strtolower () ) уничтожает существующие ранее преобразования букв в прописные, поэтому имя вроде McMurdo станет Mcmurdo. Если это очень важно, вы можете исправить ситуацию, но вам нужно использовать сравнение строк, используя функцию strcasecmp (strl, str2), которая игнорирует регистр символов при сравнении strl и str2.

 
Предыдущая   На главную   Следующая          

Ваш комментарий:

'

Реклама на сайте | Обмен ссылками | Ссылки | Контакты
Добавить статью | Добавить исходник
2010-2014 © phpsql.ru