Order-Controller: Artikelklassifizierung berücksichtigen
[kivitendo-erp.git] / SL / HTML / Util.pm
index 7212d64..f68fb0a 100644 (file)
@@ -6,12 +6,24 @@ use warnings;
 use HTML::Parser;
 
 my %stripper;
+my %entities = (
+  'lt'   => '<',
+  'gt'   => '>',
+  'amp'  => '&',
+  'nbsp' => ' ',   # should be => "\x{00A0}", but this can lead to problems with
+                   # a non-visible character in csv-exports for example
+);
 
 sub strip {
   my ($class_or_value) = @_;
 
   my $value = !ref($class_or_value) && (($class_or_value // '') eq 'SL::HTML::Util') ? $_[1] : $class_or_value;
 
+  return '' unless defined $value;
+
+  # Remove HTML comments.
+  $value =~ s{ <!-- .*? --> }{}gx;
+
   if (!%stripper) {
     %stripper = ( parser => HTML::Parser->new );
 
@@ -22,6 +34,8 @@ sub strip {
   $stripper{parser}->parse($value);
   $stripper{parser}->eof;
 
+  $stripper{text} =~ s{\&([^;]+);}{ $entities{$1} || "\&$1;" }eg;
+
   return delete $stripper{text};
 }