Комментарии 16
У меня в perl-модуле Regexp::Common::RealHTML есть более корректная реализация этого регулярного выражения, рекомендую посмотреть.
0
вы не могли бы перезалить архив, а то архивер говорит, что повреждён.
0
С архивом всё в порядке, я только что проверил. Либо ваш архивер не понимает .tar.gz, либо побился при выкачке.
0
к сожалению, не удалось достать из архива
$ tar -zxf Regexp-Common-RealHTML-1.05.tar.gz
tar: Cannot use compressed or remote archives
tar: Error is not recoverable: exiting now
$ tar -zxf Regexp-Common-RealHTML-1.05.tar.gz
tar: Cannot use compressed or remote archives
tar: Error is not recoverable: exiting now
0
$ mv Regexp-Common-RealHTML-1.05.tar.gz Regexp-Common-RealHTML-1.05.tar.gz.gz
$ gzip -d Regexp-Common-RealHTML-1.05.tar.gz.gz
$ tar -zxf Regexp-Common-RealHTML-1.05.tar.gz
Честно говоря, раньше такого безобразия за своим mod_gzip не замечал, всё нормально качалось. Возможно, после последних обновлений Gentoo что-то начало глючить.
$ gzip -d Regexp-Common-RealHTML-1.05.tar.gz.gz
$ tar -zxf Regexp-Common-RealHTML-1.05.tar.gz
Честно говоря, раньше такого безобразия за своим mod_gzip не замечал, всё нормально качалось. Возможно, после последних обновлений Gentoo что-то начало глючить.
0
Ага, я, кажется, понял. Похоже, веб-сервер при выкачке его ещё раз дополнительно gzip-ает, вероятно mod_gzip постарался. Так что после выкачки он превращается в .tar.gz.gz.
0
интересно, спасибо. но у меня не было столь всеучитывающей задачи :)
0
Парсинг - одна из самых сложных и подверженных ошибкам задач. Тем более парсинг такой нечёткой штуки, как HTML. Тем более, когда хочется чтобы твой парсер увидел те же теги и параметры, что и браузеры. Поэтому я предпочёл один раз вынести эти regexp-ы в отдельную библиотеку, чтобы не писать многократно разные regexp-ы, каждый раз с разными ошибками.
0
здесь у меня на входе уже сразу строка параметров.
но а парсинг HMTL я бы переложил на плечи какой-нибудь расширяемой XML либы с callback функционалом.
вобще, люблю задачки с парсингом, но на PHP их решать затруднительно, так как работа со строками не стандартным функционалом, а своим алгоритмом происходит достаточно долго.
но а парсинг HMTL я бы переложил на плечи какой-нибудь расширяемой XML либы с callback функционалом.
вобще, люблю задачки с парсингом, но на PHP их решать затруднительно, так как работа со строками не стандартным функционалом, а своим алгоритмом происходит достаточно долго.
0
а куда уходит параметр когда ``lvalue='' и ``=rvalue''?
0
Если Вам нужна надёжная поддержка пустых имени/значения, то пример записи можно взять из кода модуля, где определяется $param. В результате получим:
Если пустые имена/значения Вас не очень интересуют, то всё гораздо проще:
$s = 'single param=true param2="string fgfg" =v1 p1= ="" "last"="value"';
use Regexp::Common qw/ RealHTML /;
$s =~ /\A\w+/g; # пропустить имя тега
while ($s =~ /\G\s+(?:
$RE{pname}{-keep} (?: = $RE{pval}{-keep}? )? | = $RE{pval}{-keep}?
)/gxo) {
my ($name, $value) = ($1, $2|$3);
print "name='$name' value='$value'\n";
}
__END__
name='param' value='true'
name='param2' value='string fgfg'
name='' value='v1'
name='p1' value=''
name='' value=''
name='last' value='value'
Если пустые имена/значения Вас не очень интересуют, то всё гораздо проще:
$s = 'single param=true param2="string fgfg" "last"="value"'
use Regexp::Common qw/ RealHTML /;
$s =~ /\A\w+/g; # пропустить имя тега
while ($s =~ /\G\s+$RE{pname}{-keep}=$RE{pval}{-keep}/go) {
my ($name, $value) = ($1, $2);
print "name='$name' value='$value'\n";
}
__END__
name='param' value='true'
name='param2' value='string fgfg'
name='last' value='value'
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PREG: условные маски