Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вывод с большой буквы


Автор: PARROT 30.6.2005, 20:27
Пользователи заполняют форму не корректно!
Часто, имена собственные пишут с маленькой буквы (что режет глаз!!! Мой.)
Нашла такую функцию:
Код

$name=ucwords($name);

Добавила при записи в базу.
Вроде спасло положение.
На локалке заработало, закачала на хостинг.
Все данные заполненные правильно (с большой буквы), изменились, стали с маленькой, а с маленькой, стали с большой smile
Вообщем полная запутка.
Вопрос:
Что в данном случае стоит предпринять?
Постоянно исправлять надоедает.
Можно как-то проверить, перед записью в базу, с какой буквы идет надпись, если с большой оставлять как есть, если с маленькой, то изменять на большую.
Код

if(!ucword($name)) ....

Как правильно написать?
Спасибо. smile

Автор: Black 30.6.2005, 20:44
Вот может эту функцию ищешь???

Код

string ucfirst(string str);


Я бы делал так:

Код

<?
$str = "иван иванович Ивановский";
$array = explode(' ', $str);

for($i=0; $i<count($array); $i++)
{
$array[$i] = ucfirst($array[$i]);
echo $array[$i]."<br />";
}
?>

Автор: Mal Hack 30.6.2005, 20:47
PARROT
А зачем проверять? Эта функция по сути ошибки вызвать не может.

Автор: PARROT 30.6.2005, 20:56
А почему она так себя ведет?
То что с маленькой буквы, пишет с большой, а то, что с большой буквы написано, пишет с маленькой!
smile
Мне нужно чтобы если запись с большой буквы была, она оставалась ею, а вот если с маленькой написали, тогда меняем первую букву.

Автор: Irokez 30.6.2005, 20:59
у меня такое было, на хосте не работали функции strtoupper и strtolower.. возможно и с этими функциями тоже самое
лучше используй стили: text-transform: capitalize;

Автор: Black 30.6.2005, 21:00
PARROT

Код

$str = "hello world";
$str = ucfirst($str);
echo $str;
// выведет Hello World


Должно быть так...

Цитата
То что с маленькой буквы, пишет с большой, а то, что с большой буквы написано, пишет с маленькой!


что-то странное smile
Добавлено @ 21:02
Я не думаю чтобы админы отрубали функцию ucfirst - чего в ней страшного smile

Автор: PARROT 30.6.2005, 21:08
Скажем если я поставлю эту функцию при добавлении форм пользователем и при выводе на страницу, не много будет? smile

Автор: PARROT 30.6.2005, 21:25
Не, ну это нонсенс какой-то!
Добавляю для проверки ссылку к себе на сайт, при добавлении:
Код

$name=ucfirst($name);
$reg=ucfirst($reg);
$firma=ucfirst($firma);

Приходит такое письмо:
Здравствуйте, натали!
Вы или кто-либо другой зарегистрировал в нашем каталоге http://www.avtodiesel.spb.ru/index.php?page=reference
сайт http://www.figu.ru

А в базе все данные которые должны быть с большой буквы, записаны с маленькой!
Ну что ты будешь делать???
Я щас умру! smile
Может эту функцию на вывод нужно ставить? А не на запись?

Автор: Mal Hack 30.6.2005, 22:48
Видать косяк из-за русских букв.
В начало скрипта:
Код
setlocale(LC_ALL, "ru_RU.CP1251");

Если не поможет, то придется делать по аналогии:
Код
<?php
function stringUpDown($text, $up = true){

   # Convert values from Lower to Upper
   $arrayLower=array('�'
   ,'�','�','�','�','�'
   ,'�','�','�','�'
   ,'�','�','�','�'
   ,'�','�','�','�','�'
   ,'�','�','�','�');
  
   $arrayUpper=array('�'
   ,'�','�','�','�','�'
   ,'�','�','�','�'
   ,'�','�','�','�'
   ,'�','�','�','�','�'
   ,'�','�','�','�');

if($text == ''){
   return $text;
}

if($up != true) {
   $text=strtolower($text);
   $text=str_replace($arrayUpper, $arrayLower, $text);
}else{
   $text=strtoupper($text);
   $text=str_replace($arrayLower, $arrayUpper, $text);
}
   return($text);
} #end of function
?>

см. комментарии: http://ru3.php.net/strtoupper

Автор: Irokez 30.6.2005, 23:02
Mal Hack с вопросиками смотрится круто smile

Автор: PARROT 1.7.2005, 14:12
Mal Hack,
проблема решена, Вашей строчкой:
Цитата

setlocale(LC_ALL, "ru_RU.CP1251");

Видать косяк из-за русских букв// Верно именно из-за них!!!

Спасибо! Запомню!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)