|
|
|
| Здравствуйте,
помогите плиз составить регулярку, очищающую тег от мусора (стилей, классов и прочего) НО:
если в теге присуствует colspan="значение" или rowspan="значение" - эти параметры оставлять. Все остальное внутри любого тега должно быть убито. Всю голову сломал себе. Просто тег очистить от всего - не вопрос, но вот с такими нюансами - я залип ((
спасибо большое | |
|
|
|
|
|
|
|
для: f_coyote
(01.08.2011 в 22:35)
| | Вы хотите решить эту проблему при помощи одного регулярного выражения? Или допускается использование нескольких? | |
|
|
|
|
|
|
|
для: cheops
(02.08.2011 в 09:11)
| | Вы знаете - я интуитивно понимаю что ведь можно одним выражением это решить! Но, понятное дело, буду признателен за любое решение | |
|
|
|
|
|
|
|
для: f_coyote
(01.08.2011 в 22:35)
| | Лично я решал эту проблему так:
1) искал все атрибуты и заменял их на результат работы функции
2) функция проверяет есть ли среди атрибутов colspan или rowspan или и то и то. Если есть - запоминает значения.
3) заново формируется список атрибутов. Он либо пуст, либо содержит запомненные значения rowspan/colspan
Код приводить? | |
|
|
|
|
|
|
|
для: SHAman
(02.08.2011 в 12:46)
| | Если не трудно - надо логику визуально понять.. спасибо! | |
|
|
|
|
|
|
|
для: f_coyote
(02.08.2011 в 12:53)
| | Происходит замена по регулярке:
$t =~ s/<td(.*?)>/del_atr_td($1)/igse; #убиваем аттрибуты ячеек кроме colspan rowspan
|
Функция del_atr_td выглядит так:
sub del_atr_td {
my $atr = shift;
my $res;
if($atr =~ /^\s*$/) {return '<td>';}
if($atr !~ /colspan/ && $atr !~ /rowspan/) {return '<td>';}
my @colspan = $atr =~ /colspan=(['"])(.+?)\1/gi;
my @rowspan = $atr =~ /rowspan=(['"])(.+?)\1/gi;
my $ret;
foreach my $span(@colspan) {
next if($span =~ /^['"]$/);
$ret .= 'colspan="'.$span.'" ';
}
foreach my $span(@rowspan) {
next if($span =~ /^['"]$/);
$ret .= 'rowspan="'.$span.'" ';
}
$ret =~ s/\s+$//;
return "<td $ret>";
}
|
Она получает вообще все атрибуты тега. Потом ищет в них rowspan и colspan и запоминает. Если нашла что-то - формирует новый список атрибутов с запомненными значениями. Если не нашла - отдает пустоту. | |
|
|
|
|
|
|
|
для: SHAman
(02.08.2011 в 12:57)
| | SHAman - это всё красиво.
Но вопрос изначально был о регулярке в Jvascript, а не в PHP. | |
|
|
|
|
|
|
|
для: АЯ
(02.08.2011 в 13:56)
| | Это вообще Perl. Но разницы я не вижу. Синтаксис регулярок везде один. Привел свой код просто для иллюстрации логики. Кому надо - разберется. Реализовать такое на JS, даже просто переводя с Perl - дело 10 минут. Но мне этих минут жаль. | |
|
|
|
|
|
|
|
для: SHAman
(02.08.2011 в 15:20)
| | это дело 10 минут для того кто знаком с перлом. | |
|
|
|
|
|
|
|
для: sl1p
(02.08.2011 в 15:51)
| | Ну я не верю что вы не можете это перевести. Тут, конечно, особый синтаксис, но по-моему, даже если просто прочитать описание алгоритма и выдрать регулярки, можно понять что и как. Если нет, значит так надо) | |
|
|
|