ucwords не работает

12
P
На сайте с 06.01.2009
Offline
601
1666

Ребят, извините, туплю возможно, но почему не работает перевод символов?


$username = $_GET['name']; // получаем данные из формы. ок.
$username = ucwords(strtolower($username)); // НЕ РАБОТАЕТ

ps не пинайте сильно плиз

[umka]
На сайте с 25.05.2008
Offline
456
#1

Возможно, данные в кодировке utf-8 ?

Лог в помощь!
P
На сайте с 06.01.2009
Offline
601
#2
'[umka:
;10914379']Возможно, данные в кодировке utf-8 ?

А если так, то как быть? Скрипт делаю, поэтому форма шаблона стоит в пустой странице...Не прописана кодировка.

[umka]
На сайте с 25.05.2008
Offline
456
#3

Нужно сначала убедиться, в какой кодировке строка. А там уже по обстоятельствам. Если в utf-8, то написать свою функцию а-ля "mb_ucwords" или попробовать извернуться с preg_replace().

P
На сайте с 06.01.2009
Offline
601
#4
'[umka:
;10914407']Нужно сначала убедиться, в какой кодировке строка. А там уже по обстоятельствам. Если в utf-8, то написать свою функцию а-ля "mb_ucwords" или попробовать извернуться с preg_replace().

Извините, за нубский вопрос - а как проверить в какой кодировке строка в переменной $username приходит к нам из формы?

Или может быть даже есть вариант - самому назначить кодировку для формы, например...?

Спасибо

siv1987
На сайте с 02.04.2009
Offline
427
#5
postavkin:
Или может быть даже есть вариант - самому назначить кодировку для формы, например...?

http://htmlbook.ru/html/form/accept-charset

юникод

http://www.php.net/manual/ru/function.mb-convert-case.php

T
На сайте с 11.08.2005
Offline
181
#6

А может просто локаль неправильно настроена / не указана...

например: setlocale(LC_ALL,'ru_RU.CP1251');

C
На сайте с 04.02.2005
Offline
291
#7

а почему не использовать mb_string функции?

например

mb_convert_case с mode MB_CASE_TITLE

P
На сайте с 06.01.2009
Offline
601
#8

сделал как тут написано,

<form action="handler.php" accept-charset="windows-1251">
но не помогает.

Честно говоря этим вариантом не очень бы хотелось пользоваться.

Так

$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
не работает,

а так

$str = mb_convert_case($str, MB_CASE_TITLE, "windows-1251");

да, переводит символы в регистр как надо

---------- Добавлено 02.10.2012 в 23:39 ----------

Дабы темы не плодить, спршу тут. Ребят, почему проверка e-maila не работает? Спасибо заранее.

Вроде все по науке сделано.


$email_ok=eregi("^([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,4})$", $_POST['usermail']);
if (!$email_ok && $_POST['usermail']) $err.="Ошибка в емейле.<br>";
siv1987
На сайте с 02.04.2009
Offline
427
#9
postavkin:
Честно говоря этим вариантом не очень бы хотелось пользоваться.

Это почему не очень хочется? Потому что название функции не фэншуйное или что?

postavkin:
Дабы темы не плодить, спршу тут. Ребят, почему проверка e-maila не работает?

1) function ereg is deprecated

2) емайл не соответствует шаблону

3) если в емайле есть русские буквы в utf-8 http://www.google.ru/search?client=opera&rls=ru&q=utf-8+%D0%B2+%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9+php&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest

Кстати вы определитесь, какая все таки у вас кодировка win1251 или utf-8, или все таки действительно нужно правильно указать локаль.

P
На сайте с 06.01.2009
Offline
601
#10
siv1987:

Кстати вы определитесь, какая все таки у вас кодировка win1251 или utf-8, или все таки действительно нужно правильно указать локаль.

Я не знаю как это сделать, как проверить. Несколько постов выше спрашивал, но никто так и не ответил.

---------- Добавлено 03.10.2012 в 11:11 ----------

На текущий момент воспользовался этим

.    


---------- Добавлено 03.10.2012 в 11:17 ----------

postavkin:

а так
$str = mb_convert_case($str, MB_CASE_TITLE, "windows-1251");

да, переводит символы в регистр как надо

10 символов

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий