[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не ясно, где ошибка.
asandp
Доброго онлайна.
Вот код:
<?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]# - никакого результата не дает

А что за ограничители?
И чем устарела функция? Мне вообщем эта функция и нужна.

Спустя 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)) - поиск в латинницы или цифр

Спустя 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)) - этот символ значит: "любые символы, кроме указанных" в квадратных скобках шаблона не должны быть в строке.

Спустя 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:] стоит)

Спустя 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 будут помещены все найденные совпадения
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.