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

Форум PHP

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

 

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

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

тема: Проблемы с кодировкой
 
 автор: aalexx   (12.01.2007 в 12:20)   письмо автору
 
 

Есть такая проблема, данные присланные из формы проверяются на вшивость, при этом данные на латинице проверку проходят, а на кирилице нет.


<?php
if (isset($_POST["name"]))
{
  if(
$_POST["name"]!=preg_replace("/[^\\w_]/","",$_POST["name"])) echo "Ошибка! Имя должно состоять только из цифр и букв латинского и русского алфавитов.";
}
?>
<form name="form" action="index.php" method="post" enctype="application/x-www-form-urlencoded">
<input type="text" name="name" size="50">
<input type="submit" value="Отправить">
</form>


Локально на домашнем компе все работает нормально, а на хостинге кирилица игнорируется.
Граждане Мэтры, помогите советом, как решить проблему?

   
 
 автор: vbps   (12.01.2007 в 13:14)   письмо автору
 
   для: aalexx   (12.01.2007 в 12:20)
 

Скорее всего из-за application/x-www-form-urlencoded

попробуй просто:


<form name="form" action="index.php" method="post">

   
 
 автор: aalexx   (12.01.2007 в 14:37)   письмо автору
 
   для: vbps   (12.01.2007 в 13:14)
 

Пробовал, тоже самое...
У меня тоже такое ощущение что символы кирилицы кодируются в мнемоники, но urldecode() не помогает.
А может выражение "/[^\\w_]/" на сервере хостера не соответствует всем сиволам а только латинским буквам?

   
 
 автор: Trianon   (12.01.2007 в 15:11)   письмо автору
 
   для: aalexx   (12.01.2007 в 14:37)
 

>Пробовал, тоже самое...
>У меня тоже такое ощущение что символы кирилицы кодируются в мнемоники, но urldecode() не помогает.

urldecode() здесь совершенно не требуется. Дело не в кодировании параметров.

>А может выражение "/[^\w_]/" на сервере хостера не соответствует всем сиволам а только латинским буквам?

А вот это может быть запросто. Если локаль на сервере не установлена корректно.

На самом деле русские буквы в шаблоне можно задать явным диапазоном [А-Яа-яЁё]
или даже перечислить посимвольно. По идее это должно работать даже при некорректно заданной локали. Хотя тут возможны варианты...

   
 
 автор: aalexx   (12.01.2007 в 15:20)   письмо автору
 
   для: Trianon   (12.01.2007 в 15:11)
 

Если можно, помогите составить регулярное выражение с использованием [А-Яа-яЁё]. Требуется проверять слово на присутствие в нем всевозможных знаков и т.д. и т.п., в общем слово должно состоять только из букв латинского и русского алфавитов.
Кстати хостинг русский, странно что там такие вещи не установлены как должно.

   
 
 автор: Trianon   (12.01.2007 в 15:25)   письмо автору
 
   для: aalexx   (12.01.2007 в 15:20)
 


if(preg_match('/^[A-Za-zА-Яа-яЁё]+$/', $word))
    echo 'Good';
else 
    echo 'Bad';

   
 
 автор: aalexx   (12.01.2007 в 16:04)   письмо автору
 
   для: Trianon   (12.01.2007 в 15:25)
 

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

   
 
 автор: Trianon   (12.01.2007 в 16:44)   письмо автору
 
   для: aalexx   (12.01.2007 в 15:20)
 

А Вы поинтересовались у хостера, как правильно устанавливать локаль на его серверах?
У русского хостинга могут быть нерусские клиенты. :)

   
 
 автор: Trianon   (12.01.2007 в 15:13)   письмо автору
 
   для: vbps   (12.01.2007 в 13:14)
 

>Скорее всего из-за application/x-www-form-urlencoded
>
application/x-www-form-urlencoded - обычный умалчиваемый вид кодирования параметров формы. Прпробовать "просто" - значит ничего не изменить.

   
Rambler's Top100
вверх

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