$ctr=0; while(/([^\000]*?<\/table>)/){ $text=$1; while($text=~/
/){ $tag=$&; $ctr=$ctr+1; $tag=~s/(/$tag/; } $text=~s/(/\1_level$ctr>/g; $text=~s/(<\/table)>/\1_level$ctr>/g; $ctr=0; $text=~s/(/\1>/g; $text=~s/(<\/?)(thead|tbody)([^>]*)?>//g; $text=~s/(<\/?)(th)([^>]*)?>/$1td>/g; while($text =~ /[^\000]*?<\/a>/){ $href = $1; $class = ""; if($href =~ /^http/i){ $class = "http";} if($href =~ /^www/i){ $class = "nohttp";} if($href =~ /^mailto/i){$class = "mailto";} if($href =~ /^ftp/i){ $class = "ftp";} if($class eq ""){ $text =~ s/([^\000]*?)<\/a>/\2/; }else{ $text =~ s/([^\000]*?)<\/a>/\2<\/remotelink>/; } } s/
[^\000]*?<\/table>/$text/; } # Remove table and img tags inside table if an tag was encountered while (/[^\000]*?<\/table_level\1>/) { $table2=$&; if ($table2 =~ / tag $table2=~s/<\/?(table_level(2|3)|tr|td)(\s+[^>]*)?>|]*\/>//g; s/[^\000]*?<\/table_level\1>/$table2/; } else { $table2=~s/(<\/?table_level\d)/$1_temp/g; s/[^\000]*?<\/table_level\1>/$table2/; } } s/(<\/?table_level\d)_temp/$1/g; # Extract table inside table if no tag was encountered # inside the inner table. while (/([^\000]*?<\/table_level1>)/) { $table1=$1; #$table2=""; $table=""; while ($table1=~ /([^\000]*?)<\/table_level2>/) { $table2=$1; $table=$&; # Extract inner table and place it after the second level table $extracted_table3=""; while ($table2 =~ s/([^\000]*?<\/table_level3>)//) { $extracted_table3="$extracted_table3\n$1"; } $table2=~s/([^\000]*?)<\/table_level2>/$table$extracted_table3/g; #$table2=~s/([^\000]*?<\/table_level2>)/$1$extracted_table3/g; s/([^\000]*?<\/table_level2>)//; #$table2=~s/(<\/?table)_level2/$1_2/g; } $table1=~s/([^\000]*?)<\/table_level2>//; $table1=~s/([^\000]*?)<\/table_2>//; $table1=~s/(<\/?table)_level1/$1/g; s/[^\000]*?<\/table_level1>/$table2$table1/; } s/(<\/?table)_(level\d|\d)/$1/g;