Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Преобразование регистра строковой переменной
 
 автор: tavila2009   (10.03.2010 в 15:55)   письмо автору
 
 

Принимаю переменну из формы так:

$city = substr($_POST["city"],0,32);
$city = mysql_escape_string(stripslashes($city));

Это название города. Часто пишут с маленькой буквы. Или вообще всё с большой буквы. Подскажите пожалуйста как переделать эту переменную чтобы первая всегда была большой а остальные маленькие буквы.

  Ответить  
 
 автор: Лена   (10.03.2010 в 15:59)   письмо автору
 
   для: tavila2009   (10.03.2010 в 15:55)
 

Сначала все перевести в нижний регистр - strtolower() или mb_strtolower() - если utf,
потом - ucfirst()

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 16:01)   письмо автору
 
   для: Лена   (10.03.2010 в 15:59)
 

А как это записать? Никогда не использовала эти функции. Дала знакомой учебник почитать. Как без рук!

  Ответить  
 
 автор: buldovsky   (10.03.2010 в 16:07)   письмо автору
 
   для: tavila2009   (10.03.2010 в 16:01)
 

Вот возьми учебник хороший. Только никому его не давай читать, а то не вернут.

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 16:25)   письмо автору
 
   для: buldovsky   (10.03.2010 в 16:07)
 

Я здесь на сайте нашла. Как раз такой как у меня был. Ну я как всегда!! Спасибо всем.
Вот - http://softtime.ru/bookphp/gl3_13.php

  Ответить  
 
 автор: Марко   (10.03.2010 в 16:27)   письмо автору
 
   для: Лена   (10.03.2010 в 15:59)
 


<?php
$city 
"GtsdnehgjSHJSJ";
$city strtolower($city);
$city ucfirst($city);
echo 
$city;
?>

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 16:48)   письмо автору
 
   для: Марко   (10.03.2010 в 16:27)
 

Спасибо. Я вот так сделала и у меня получилось

$city = substr($_POST["city"],0,70);
$city = mysql_escape_string(stripslashes($city));
$city = strtolower($city);
$city = ucfirst($city);

Ну да. То же самое. Очень удобная вещь.

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 16:52)   письмо автору
 
   для: Марко   (10.03.2010 в 16:27)
 

А вот такой момент. Иногда города состоят из двух слов или даже больше. Например
Нижний Тагил? Сработает или нет? Или есть ещё что-то.
Щас попробовала - только у первого слова сделал.

  Ответить  
 
 автор: Trianon   (10.03.2010 в 17:03)   письмо автору
 
   для: tavila2009   (10.03.2010 в 16:52)
 

а еще Ростов есть. Который на Дону.

  Ответить  
 
 автор: Марко   (10.03.2010 в 17:05)   письмо автору
 
   для: tavila2009   (10.03.2010 в 16:52)
 

Шота такое получилось

<?php
$city 
"san francisco";
$arr explode(" ",$city);
$arr[0] = strtolower($arr[0]);
$arr[1] = strtolower($arr[1]);
$arr[0] = ucfirst($arr[0]);
$arr[1] = ucfirst($arr[1]);
echo 
$arr[0];
echo 
$arr[1];
?>

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 17:10)   письмо автору
 
   для: Марко   (10.03.2010 в 17:05)
 

наверно всётаки для всех слов это не отловить. Неизвестно число слов.

  Ответить  
 
 автор: Марко   (10.03.2010 в 17:19)   письмо автору
 
   для: tavila2009   (10.03.2010 в 17:10)
 

А вот и для Ростова-На-Дону

<?php
$city 
"rostov-na-dony";
$arr explode("-",$city);
for(
$i 0$i count($arr) ; ++$i)
{
$arr[$i] = strtolower($arr[$i]);
$arr[$i] = ucfirst($arr[$i]);
$city implode("-",$arr);
}
echo 
$city;
?>

  Ответить  
 
 автор: Лена   (10.03.2010 в 17:20)   письмо автору
 
   для: Марко   (10.03.2010 в 17:19)
 

Вместо ucfirst() тогда уже ucwords(). И исключить слова, которые меньше трех букв - для них не делать первую букву заглавной.
А если кодировка utf-8 вся эта идея не прокатит. Там нет ни ucfirst(), ни ucwords().

  Ответить  
 
 автор: tavila2009   (10.03.2010 в 17:22)   письмо автору
 
   для: Марко   (10.03.2010 в 17:19)
 

ах вот как ! Спасибо большое!
А вот эта не сработает?

ucwords()
Производит преобразование первого символа каждого слова строки в верхний регистр.
Щас попробую.
Вот этого достаточно оказалось

$city = strtolower($city);
$city = ucwords($city);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования