Convert HTML-Entities and prevent HTML-Tags from changing


/ Published in: PHP
Save to your folder(s)

Diese Funktion wendelt Entities in HTML Quellcode um, ohne dabei den HTML Quellcode zu zerstören.


Copy this code and paste it in your HTML
  1. function entiConv($txt) {
  2. // Liste mit Umlauten abfragen und Klammern rauslöschen:
  3. $table = get_html_translation_table(HTML_ENTITIES);
  4. unset($table['<']);
  5. unset($table['>']);
  6.  
  7. // Das Zeichen & ganz oben im Array platzieren, damit dieses Zeichen in den Ersetzungen nicht nochmal ersetzt wird:
  8. $temp = $table['&'];
  9. unset($table['&']);
  10. $table = array_reverse($table, true);
  11. $table['&'] = $temp;
  12. $table = array_reverse($table, true);
  13.  
  14. // Erst die Entities in echte Werte umwandeln - Beispiel String:
  15. // "Hallo Entities &amp; Leser und & Programmierer" wird zu "Hallo Entities & Leser und & Programmierer"
  16. foreach($table as $key => $value) {
  17. if($key == "\"") {
  18. // Anführungsstriche nur außerhalb von HTML-Tags ersetzen:
  19. $txt = preg_replace("/((<[^>]*)|$value)/e", '"\2"=="\1" ? "\1" : "$key"', $txt);
  20. } else {
  21. $txt = preg_replace("/$value/", $key, $txt);
  22. }
  23. }
  24. // Dann die echten Werte in Entities umwandeln - Beispiel String:
  25. // "Hallo Entities & Leser und & Programmierer" wird zu "Hallo Entities &amp; Leser und &amp; Programmierer"
  26. foreach($table as $key => $value) {
  27. if($key == "\"") {
  28. // Anführungsstriche nur außerhalb von HTML-Tags ersetzen:
  29. $txt = preg_replace("/((<[^>]*)|$key)/e", '"\2"=="\1" ? "\1" : "$value"', $txt);
  30. } else {
  31. $txt = preg_replace("/$key/", $value, $txt);
  32. }
  33. }
  34. return $txt;
  35. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.