Задать вопрос
@vadimuar

Ошибка Warning: preg_match(): Unknown modifier ']' in?

Ошибка:
Warning: preg_match(): Unknown modifier ']' in
Что делать?
Вот код:
foreach ($_GET as $check_url) {
if (!is_array($check_url)) {
$check_url = str_replace("\"", "", $check_url);
if ((preg_match("<[^>]*script*\"?[^>]*>", $check_url)) || (preg_match("<[^>]*object*\"?[^>]*>", $check_url)) ||
(preg_match("<[^>]*iframe*\"?[^>]*>", $check_url)) || ( preg_match ("<[^>]*applet*\"?[^>]*>", $check_url)) ||
(preg_match("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) ||
(preg_match("<[^>]*form*\"?[^>]*>", $check_url)) || (preg_match("\([^>]*\"?[^)]*\)", $check_url)) ||
(preg_match("\"", $check_url))) {
die ();
}
}
}
unset($check_url);
  • Вопрос задан
  • 5197 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
В preg_match в кавычках сначала ставится два символа, которые обозначают зону видимости самой регулярки. Вот в этом примере
preg_match("<[^>]*script*\"?[^>]*>", $check_url)
так как вы поставили после кавычки символ <, следовательно php думает, что символ > является закрывающим, следовательно за последним символом должны идти модификаторы, у вас на том месте квадратная скобка и далее часть нерабочей регулярки. Вам надо символ > или экранировать или символы обозначающий регулярное выражение заменить другими
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
Проверьте preg_match("\([^>]*\"?[^)]*\)", $check_url)
Кажется вы тут то ли вместо > написали ) то ли что-то другое хотели.
Возможно хотели \) написать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы