The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Помогите с регексами, !*! Dr. Nebula, 31-Авг-05, 18:12  [смотреть все]
Пытаюсь нормально настроить squidguard.cgi

Но в нем не правильно указано регулярное выражение для парсинга строки

строка:
clientaddr=192.168.16.1+clientname=+clientident=login+srcclass=sample-clients+targetclass=porn+url=http://www.sex.ru/

Код для парсинга
  if (defined($query)) {
    while ($query =~ /^\&?([^\&=]+)=\"([^\"]*)\"(.*)/ || $query =~ /^\&?([^\&=]+)=([^\&=]*)(.*)/) {
      my $key = $1;
      my $value = $2;
      $value = %word->{"unknown"}->{$lang} unless(defined($value) && $value && $value ne "unknown");
      $query = $3;
      if ($key =~ /^(clientaddr|clientident|clientuser|clientgroup|targetgroup|url)$/) {
        eval "\$$key = \$value";
      }
      if ($query =~ /^url=(.*)/) {
        $url = $1;
        last;
      }
    }
  }

Если убрать в выражении кавычки - получим что все кроме урла забьется в clientaddr. А иначе - вобще не парсит толком

  • Помогите с регексами, !*! ihor, 20:51 , 31-Авг-05 (1)
    то, что сразу бросается в глаза:
    скрипт ожидает в качестве разделителя '&' а в указанной строке используется '+'.
    т.о. образом нужно заменить

    $query =~ /^\&?([^\&=]+)=\"([^\"]*)\"(.*)/ || $query =~ /^\&?([^\&=]+)=([^\&=]*)(.*)/

    на

    $query =~ /^\+?([^\+=]+)=\"([^\"]*)\"(.*)/ || $query =~ /^\+?([^\+=]+)=([^\+=]*)(.*)/

    но честно говоря, криво это как-то всё, может где-то ещё что вылезет :(

    • Помогите с регексами, !*! гость, 07:36 , 18-Июн-08 (2)
      >[оверквотинг удален]
      >т.о. образом нужно заменить
      >
      >$query =~ /^\&?([^\&=]+)=\"([^\"]*)\"(.*)/ || $query =~ /^\&?([^\&=]+)=([^\&=]*)(.*)/
      >
      >на
      >
      >$query =~ /^\+?([^\+=]+)=\"([^\"]*)\"(.*)/ || $query =~ /^\+?([^\+=]+)=([^\+=]*)(.*)/
      >
      >но честно говоря, криво это как-то всё, может где-то ещё что вылезет
      >:(

      Поменять надо + на & и все будет ок




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру