$var = @$_GET['q'] ;
$trimmed = trim($var);
$trimmed = substr($var,0,20);
$trimmed_array = explode(" ",$trimmed);
$trimmed = preg_replace("/\*/", "x", $trimmed); // просто кое-где надо менять * на х
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)|(\/)|(\-)(\.)]/", $trimmed ))
{
echo "Допустимы ТОЛЬКО буквы латинского и русского алфавита, а также знаки .-()/";
exit();
}
else $good = $trimmed;
Как ни странно, но у меня работает. А почему не должно?
Стоп!
У тебя определяется вхождение недопустимых символов - да, но прореплейсить ты их не сможешь по данному патерну. Если для проверки - то сойдёт, хотя использование оператора ИЛИ внутри символьного класса - это плохо. А если для замены ненужных символов - то не прокатит.
Vallar_ultra, я некорректно составил "ТЗ" и вот результат. Дело в том, что мне нужно разрешить выполнять скрипт ТОЛЬКО в том случае, если искомый код соответствуем налагаемым условиям, а в противном случае - нет. Поэтому я использовал preg_match. Осталось только разобраться почему плохо использовать "|" и как это исправить, чтобы было хорошо?
Vallar_ultra я ещё добавил 0-9, так как цифры тож мне нужны, а остальное оставил как Вы указали.
Ещё раз огромное спасибо, будете в Минске - с меня бокальчик светлого.