Не работает функция, подскажите пожалуйста, где ошибка:
//Проверка присутствия в тексте только русских букв
function check_rus($str)
{
setlocale(LC_CTYPE, "ru_RU.CP1251");
if (preg_match("/^([а-яА-Я]+)$/", $str))
{
return true;
}
return false;
}
Спустя 4 минуты, 32 секунды (14.09.2011 - 13:05) alex12060 написал(а):
* не заметил винду :О
#([а-я]+)#i
Спустя 1 минута, 42 секунды (14.09.2011 - 13:06) Winston написал(а):
Файл у тебя тоже в windows-1251 ?
Эта проверка вернет true если ты только передашь только одно слово на проверку
Покажи пример, что ты передаешь на проверку ?
Спустя 17 секунд Winston написал(а):
alex12060
Эта проверка вернет true если ты только передашь только одно слово на проверку
$str = 'Привед';
Покажи пример, что ты передаешь на проверку ?
Спустя 17 секунд Winston написал(а):
alex12060
Цитата (zvezda_t @ 14.09.2011 - 13:00) |
setlocale(LC_CTYPE, "ru_RU.CP1251"); |
Спустя 13 минут, 28 секунд (14.09.2011 - 13:20) Игорь_Vasinsky написал(а):
Для анси
Для юникод
#[а-яё]#i
Для юникод
#[а-яё]#iu
Спустя 3 минуты, 24 секунды (14.09.2011 - 13:23) Winston написал(а):
Еще все зависит от того в каком виде передаются данные на проверку ?
Спустя 2 минуты, 26 секунд (14.09.2011 - 13:26) zvezda_t написал(а):
Winston
я и передавала на проверку слово.
Теперь мне нужно проверить чтоб были только русские буквы, пробел и "-".
так не правильно?
я и передавала на проверку слово.
Теперь мне нужно проверить чтоб были только русские буквы, пробел и "-".
так не правильно?
if (preg_match("#[а-яё]#i\s\-", $str))
Цитата |
Еще все зависит от того в каком виде передаются данные на проверку ? |
//проверка данных
$lastname=iconv('UTF-8', 'cp1251', $res->{'family-name'});
$lastname=ucfirst(strtolower(trim($lastname)));
if(check_rus($lastname))
{...}
Спустя 1 минута, 6 секунд (14.09.2011 - 13:27) Игорь_Vasinsky написал(а):
if (preg_match("#[а-яё\-\s]#i", $str))
\s - это пробел, если он те нужен
Спустя 2 минуты, 25 секунд (14.09.2011 - 13:29) Winston написал(а):
Вот так пробуй
if (preg_match("#^[а-яё\-\s]+$#i", $str))
Спустя 2 минуты, 40 секунд (14.09.2011 - 13:32) Winston написал(а):
Цитата (zvezda_t @ 14.09.2011 - 13:26) |
$lastname=iconv('UTF-8', 'cp1251', $res->{'family-name'}); |
Нужно вот так писать
$lastname=iconv('UTF-8', 'windows-1251', $res->{'family-name'});
Спустя 31 секунда (14.09.2011 - 13:32) zvezda_t написал(а):
Winston почему?
Спустя 3 минуты, 58 секунд (14.09.2011 - 13:36) Winston написал(а):
Цитата (zvezda_t @ 14.09.2011 - 13:32) |
Winston почему? |
Хм.. Мне всегда казалось, что CP1251 используется только в запросах sql, а в остальных случаях windows-1251. Я оказался не прав, CP1251 тоже нормально работает
Спустя 4 минуты, 51 секунда (14.09.2011 - 13:41) zvezda_t написал(а):
Winston, спасибо
Спустя 7 минут, 8 секунд (14.09.2011 - 13:48) Winston написал(а):
Цитата (zvezda_t @ 14.09.2011 - 13:41) |
Winston, спасибо |
Получилось ?
Спустя 10 минут, 8 секунд (14.09.2011 - 13:59) zvezda_t написал(а):
Да, но почему то только для utf-8.
Если делаю свою проверку с приобразованием типов и сменой регистров, то ерунду выдаёт.
Если делаю свою проверку с приобразованием типов и сменой регистров, то ерунду выдаёт.
Спустя 2 минуты, 26 секунд (14.09.2011 - 14:01) Игорь_Vasinsky написал(а):
какую ерунду, например?
Спустя 2 минуты, 16 секунд (14.09.2011 - 14:03) Winston написал(а):
У тебя файл, тоже в windows-1251 ?
Спустя 7 минут, 27 секунд (14.09.2011 - 14:11) zvezda_t написал(а):
Цитата |
какую ерунду, например? |
через слово, через два слова - срабатывает, то не срабатывает, хотя все слова на русском.
Спустя 2 минуты, 17 секунд (14.09.2011 - 14:13) zvezda_t написал(а):
Цитата |
У тебя файл, тоже в windows-1251 ? |
файл в ANSI as UTF-8
Спустя 7 минут, 6 секунд (14.09.2011 - 14:20) Winston написал(а):
Цитата (zvezda_t @ 14.09.2011 - 14:13) |
файл в ANSI as UTF-8 |
Тогда другое дело. Попробуй так написать
setlocale(LC_CTYPE, "ru_RU.CP1251");
function check_rus($str)
{
if (preg_match("/^([а-яё\s-]+)$/iu", $str))
{
return true;
}
return false;
}
$lastname = $res->{'family-name'};
$lastname = ucfirst(strtolower(trim($lastname)));
var_dump(check_rus($lastname));
Должно true выдать
Спустя 28 минут, 36 секунд (14.09.2011 - 14:49) zvezda_t написал(а):
if (preg_match("/^([а-яё\s-]+)$/iu", $str))
"u"=оставить?
вроде работает
"u"=оставить?
вроде работает
Спустя 19 минут, 59 секунд (14.09.2011 - 15:09) Winston написал(а):
Цитата (zvezda_t @ 14.09.2011 - 14:49) |
"u"=оставить? |
Да, оставить, его используют при работе с символами юникода.
Спустя 3 часа, 24 минуты, 37 секунд (14.09.2011 - 18:33) neadekvat написал(а):
Интересные вы личности. ё отдельно ставите, но почему-то думаете, что при этом с Ё движок регулярок прекрасно знаком.
Цитата (Winston @ 14.09.2011 - 15:20) |
$lastname = $res->{'family-name'}; |
А при создании объекта ты еще & небось ставишь.
Хватит использовать устаревшие конструкции.
Спустя 5 минут, 59 секунд (14.09.2011 - 18:39) ZSH написал(а):
Цитата |
$lastname = $res->{'family-name'}; |
Кажется мне что тут собака зарыта в дефисе в имени свойства.
Спустя 3 минуты, 49 секунд (14.09.2011 - 18:43) Winston написал(а):
Спустя 11 минут, 5 секунд (14.09.2011 - 18:54) ZSH написал(а):
Цитата |
Не свойства, а элемента |
именно свойства объекта $res.
Если в названиях полей в таблице БД есть дефис, то после mysql_fetch_object приходится так-же извращатся
Спустя 2 минуты, 25 секунд (14.09.2011 - 18:57) Winston написал(а):
Цитата (ZSH @ 14.09.2011 - 18:54) |
именно свойства объекта $res. |
А ну да...
Спустя 17 часов, 19 минут, 38 секунд (15.09.2011 - 12:16) czech написал(а):
что то у меня не получается
<?php
$lastname=$_POST["data"];
function check_rus($lastname)
{
setlocale(LC_CTYPE, "ru_RU.UTF-8");
if (preg_match("#^[а-яё\-\s]+$#i", $lastname))
{
return true;
}
return false;
}
$lastname=ucfirst(strtolower(trim($lastname)));
if(check_rus($lastname))
{
echo "рус";
}
else
{
echo "eng";
}
?>
Спустя 7 минут, 36 секунд (15.09.2011 - 12:24) Winston написал(а):
czech
Попробуй так
Попробуй так
setlocale(LC_CTYPE, "ru_RU.CP1251");
function check_rus($str)
{
if (preg_match("/^([а-яёЁ\s-]+)$/iu", $str))
{
return true;
}
return false;
}
$lastname = $_POST['data'];
$lastname = ucfirst(strtolower(trim($lastname)));
var_dump(check_rus($lastname));
Спустя 11 минут, 55 секунд (15.09.2011 - 12:36) twin написал(а):
зачем там условие... Даже если хочется четких типов, есть приведение. А вообще вот это должно работать без всяких изысков.
function check_rus($str)
{
return (boolean)preg_match("/^([а-яёЁ\s-]+)$/iu", $str);
}
$lastname = 'русский букв Ё';
var_dump(check_rus($lastname));
Спустя 42 секунды (15.09.2011 - 12:36) czech написал(а):
Цитата (Winston @ 15.09.2011 - 13:24) |
setlocale(LC_CTYPE, "ru_RU.CP1251"); |
чтоб в форме не ввел
выдает
bool(false)
Спустя 2 минуты, 56 секунд (15.09.2011 - 12:39) Winston написал(а):
У тебя какая кодировка, utf8 или СР1251 ?
Спустя 2 минуты, 23 секунды (15.09.2011 - 12:42) czech написал(а):
я может не правильно понял
но мне надо определить на каком языке пост получен
но мне надо определить на каком языке пост получен
Спустя 42 секунды (15.09.2011 - 12:42) czech написал(а):
Цитата (Winston @ 15.09.2011 - 13:39) |
У тебя какая кодировка, utf8 или СР1251 ? |
utf-8
Спустя 6 минут, 53 секунды (15.09.2011 - 12:49) Winston написал(а):
Цитата |
setlocale(LC_CTYPE, "ru_RU.CP1251"); |
Цитата |
$lastname = ucfirst(strtolower(trim($lastname))); |
Попробуй из кода убрать эти две строки...
Спустя 21 минута, 5 секунд (15.09.2011 - 13:10) czech написал(а):
Цитата (Winston @ 15.09.2011 - 13:49) |
Попробуй из кода убрать эти две строки... |
убрал , ввожу по русски и на латинице
bool(false)
Спустя 3 минуты, 38 секунд (15.09.2011 - 13:14) Winston написал(а):
Цитата (czech @ 15.09.2011 - 13:10) |
убрал , ввожу по русски и на латинице bool(false) |
Не знаю, у меня все работает, прикрепи сюда свой php файл.
Спустя 5 минут, 37 секунд (15.09.2011 - 13:20) czech написал(а):
вот
Спустя 10 минут, 12 секунд (15.09.2011 - 13:30) Winston написал(а):
<form action="rus_eng.php" method=POST>
<input type=data name=searchword size=30></input>
<input type=submit value="Искать"></input><br><br>
</form>
Во первых у вас форма не правильная, вот правильно
<form action="rus_eng.php" method=POST>
<input type="text" name="searchword" size=30></input>
<input type="submit" value="Искать"></input><br><br>
</form>
А во вторых перепишите файл rus_eng.php вот так:
Свернутый текст
<?php
function check_rus($str)
{
$str = iconv('CP1251', 'UTF-8', $str);
if (preg_match("/^([а-яёЁ\s-]+)$/iu", $str))
return true;
return false;
}
$lastname = $_POST['searchword'];
var_dump(check_rus($lastname));
?>
Спустя 16 минут, 26 секунд (15.09.2011 - 13:46) czech написал(а):
Цитата (Winston @ 15.09.2011 - 14:30) |
<form action="rus_eng.php" method=POST> Во первых у вас форма не правильная, вот правильно <form action="rus_eng.php" method=POST> А во вторых перепишите файл rus_eng.php вот так: Свернутый текст
|
может у меня что нибудь с apache?
не работает
Спустя 3 минуты, 39 секунд (15.09.2011 - 13:50) killer8080 написал(а):
Winston
а с каких пор инпут стал парным тэгом? И в кавычках должны быть значения всех атрибутов.
html синтаксис
xhtml синтаксис
а с каких пор инпут стал парным тэгом? И в кавычках должны быть значения всех атрибутов.
html синтаксис
<input type="text" name="searchword" size="30">
xhtml синтаксис
<input type="text" name="searchword" size="30" />
Спустя 1 минута, 42 секунды (15.09.2011 - 13:52) Winston написал(а):
Цитата (killer8080 @ 15.09.2011 - 13:50) |
Winston а с каких пор инпут стал парным тэгом? |
Втык
Спустя 18 минут, 36 секунд (15.09.2011 - 14:10) killer8080 написал(а):
Winston
не обижайся, я ж не со зла
не обижайся, я ж не со зла
Спустя 3 минуты, 2 секунды (15.09.2011 - 14:13) Winston написал(а):
Интересно за что обижаться ?
Спустя 1 минута, 33 секунды Winston написал(а):
На смайлику sorrie? Я такого слова не знаю
Спустя 1 минута, 33 секунды Winston написал(а):
На смайлику sorrie? Я такого слова не знаю
Спустя 18 часов, 12 минут, 53 секунды (16.09.2011 - 08:26) czech написал(а):
проверил на другом сервере
и менял кодировку на windows-1251
не работает!!!
и менял кодировку на windows-1251
не работает!!!
Спустя 1 час, 40 минут, 30 секунд (16.09.2011 - 10:07) Winston написал(а):
Попробуй мои файлы у себя запусти, если не сработает, то у меня уже нет слов...
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)