Posted By

OscarWilde on 02/27/08


Tagged

tags convert entities


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

vali29


Convert HTML-Entities and prevent HTML-Tags from changing


 / Published in: PHP
 

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

  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  

You need to login to post a comment.