Вот код:
<?php
$string = 'XYZ';
if (eregi('[^а-Яa-Z0-9]', $string)) {
echo "'$string' contains a 'z' or 'Z'!";
}
?>
Выкидывает ошибку, ну никак не могу выяснить где она... Помогите плз..
Спустя 4 минуты, 17 секунд (24.07.2010 - 11:54) DedMorozzz написал(а):
Давай так - скажи что ты хочешь получить.
Спустя 1 минута, 2 секунды (24.07.2010 - 11:55) Basili4 написал(а):
#[^а-Яa-Z0-9]# так пробуй
Спустя 7 секунд (24.07.2010 - 11:55) twin написал(а):
Ограничителей маски нет. И вообще eregi() устарела.
Спустя 2 часа, 16 минут, 47 секунд (24.07.2010 - 14:12) asandp написал(а):
Хочу получить чтоб в форму можно было вводить только латинские и кириллические символы а так же цифры. ну вообщем исключить все посторонние символы.
Но возникает ошибка: Warning: eregi() [function.eregi]: REG_ERANGE in Z:\home\vk.com\www\test2.php on line 3
#[^а-Яa-Z0-9]# - никакого результата не дает
А что за ограничители?
И чем устарела функция? Мне вообщем эта функция и нужна.
Но возникает ошибка: Warning: eregi() [function.eregi]: REG_ERANGE in Z:\home\vk.com\www\test2.php on line 3
#[^а-Яa-Z0-9]# - никакого результата не дает
А что за ограничители?
И чем устарела функция? Мне вообщем эта функция и нужна.
Спустя 1 час, 22 минуты, 7 секунд (24.07.2010 - 15:34) twin написал(а):
$string = 'XYZ';
if (!preg_match('#^[а-яёa-z0-9]+$#i', $string)) {
echo "'$string' contains a 'z' or 'Z'!";
}
Спустя 10 минут, 26 секунд (24.07.2010 - 15:45) asandp написал(а):
Спасибо! Все равботает!
Спустя 15 минут, 39 секунд (24.07.2010 - 16:00) Michael написал(а):
Ошибка там кстати была из-за неверного промежутка а-Я т.к. буква Я идет до а
Спустя 2 часа, 33 минуты, 14 секунд (24.07.2010 - 18:34) asandp написал(а):
т.е. нужно не "[а-Я]" а "[я-А]" ?
Спустя 44 секунды (24.07.2010 - 18:34) asandp написал(а):
да, кстати, а как можно еще также добавить в шаблон список знаков припенания?
Спустя 8 часов, 50 минут, 9 секунд (25.07.2010 - 03:25) Invis1ble написал(а):
[:alnum:] - все латинские буквы + цифры
[:punct:] - знак пунктуации
например preg_match("/^[[:alnum:]]$/i",$string)) - поиск в латинницы или цифр
[:punct:] - знак пунктуации
например preg_match("/^[[:alnum:]]$/i",$string)) - поиск в латинницы или цифр
Спустя 2 минуты, 46 секунд (25.07.2010 - 03:27) Invis1ble написал(а):
preg_match ("/^[А-Яа-я]$/i",$string) - кириллица
Спустя 5 часов, 13 минут, 33 секунды (25.07.2010 - 08:41) asandp написал(а):
Спасибо всем ответившим! Буду делать.
Спустя 3 часа, 15 минут, 13 секунд (25.07.2010 - 11:56) DedMorozzz написал(а):
"А-Яа-я" эквивалентно А-я. Так же учти, что буквы ё нету в этом промежутке
Спустя 2 часа, 30 минут, 41 секунда (25.07.2010 - 14:27) asandp написал(а):
Блин, что-то как не пытаюсь, сколько не читаю мануалы, не могу осмыслить.
МОжет я не так объяснил чего хочу.
Хочу чтобы если в строке найдено что-то, кроме кирилический, латинских букв, цифр и знаков припенания - то... а иначе... Вообщем чтобы скрипты не пропускал.
Пока только вот так:
Это я понимаю так: если найдено что-то, что не в этом шаблоне, то плохо, иначе все нормально. Но почему то он даже так как на примере гговорит что все нормально.
МОжет я не так объяснил чего хочу.
Хочу чтобы если в строке найдено что-то, кроме кирилический, латинских букв, цифр и знаков припенания - то... а иначе... Вообщем чтобы скрипты не пропускал.
Пока только вот так:
<?
$string = "№;%:?#$%^&";
if (preg_match('#^[^а-яёa-z0-9 [:punct:]]+$#i', $string)) {
print "Плохо";
}else{
print "Все нормально";
}
?>
Это я понимаю так: если найдено что-то, что не в этом шаблоне, то плохо, иначе все нормально. Но почему то он даже так как на примере гговорит что все нормально.
Спустя 2 дня, 5 часов, 58 минут, 4 секунды (27.07.2010 - 20:25) Invis1ble написал(а):
Все правильно он тебе говорит, потому что он находит совпадения в $string. А ты неправильно понимаешь - в твоем скрипте наоборот если совпадения не найдены, то выводится "Все нормально", иначе - "Плохо".
if (preg_match('#^[^а-яёa-z0-9 [:punct:]]+$#i', $string)) - этот символ значит: "любые символы, кроме указанных" в квадратных скобках шаблона не должны быть в строке.
if (preg_match('#^[^а-яёa-z0-9 [:punct:]]+$#i', $string)) - этот символ значит: "любые символы, кроме указанных" в квадратных скобках шаблона не должны быть в строке.
Спустя 15 часов, 18 минут, 23 секунды (28.07.2010 - 11:43) asandp написал(а):
Цитата (Invis1ble @ 27.07.2010 - 17:25) |
Все правильно он тебе говорит, потому что он находит совпадения в $string. А ты неправильно понимаешь - в твоем скрипте наоборот если совпадения не найдены, то выводится "Все нормально", иначе - "Плохо". if (preg_match('#^[^а-яёa-z0-9 [:punct:]]+$#i', $string)) - этот символ значит: "любые символы, кроме указанных" в квадратных скобках шаблона не должны быть в строке. |
Так мне по сути так и надо. Любые символы кроме указанных не должны быть в строке. т.е. он не должен пропускать вредоносные скрипты. но что-то он слишком многое пропускает. и, кстати, не пропускает пробел помоему
Спустя 11 часов, 37 минут, 2 секунды (28.07.2010 - 23:20) Invis1ble написал(а):
если тебе надо исключить возможные тэги из строки, то это делается намного проще:
$string=striptags($string);
а пробел не пропускает, потому что он включен в шаблон (перед [:punct:] стоит)
$string=striptags($string);
а пробел не пропускает, потому что он включен в шаблон (перед [:punct:] стоит)
Спустя 11 часов, 19 минут, 59 секунд (29.07.2010 - 10:40) asandp написал(а):
Ну на сколько я понял эта функция удаляет тэги, а мне скорее надо чтобы функция просто нашла такие теги
Спустя 9 часов, 39 минут, 22 секунды (29.07.2010 - 20:20) Invis1ble написал(а):
а зачем тебе их искать? Там в striptags можно указать в качестве второго необязательного параметра разрешенные тэги, которые функция не будет трогать...
Ну если тебе очень надо их все-таки найти то попробуй например так:
preg_match_all ("/<.*?>/",$string,$tags); - вроде должно работать...
в массив $tags будут помещены все найденные совпадения
Ну если тебе очень надо их все-таки найти то попробуй например так:
preg_match_all ("/<.*?>/",$string,$tags); - вроде должно работать...
в массив $tags будут помещены все найденные совпадения