maettig.com

Thiemos Archiv

Typografische Anführungszeichen, sogenannte "curly" oder auch "smart Quotes" (wie hier in der spitzen, aber auch in der „deutschen“ Fassung) sind hübsch und gut lesbar. Im Gegensatz dazu ist das, was wir als "normal" kennen, streng genommen gar kein Anführungs- sondern ein Zollzeichen. Es wäre allerdings ziemlich nervend, deswegen jedesmal die entsprechenden »HTML-Entitäten« oder sogar die „Unicode-Entsprechungen“ aufschreiben zu müssen. Ein regulärer Ausdruck löst das Problem elegant.
$text = preg_replace(
  '{<(code|head|pre|script)\b.+?</\1>|<[^>]*|(?<!\w)"(([^"<]|<[^>]*)+)"(?!\w)}esS',
  "str_replace('\\\"', '\"', '\\2' ? '&raquo;\\2&laquo;' : '\\0')",
  $text);
Das sieht kompliziert aus und muss es auch, da zum einen Anführungszeichen innerhalb von HTML-Tags (und innerhalb von Codeblöcken) nicht verändert werden sollen, andererseits aber HTML-Tags innerhalb von in Anführungszeichen eingeschlossenen Blöcken erlaubt sein sollen. Im Netz finden sich vergleichbare Lösungen (z.B. Matthews Skript oder das ziemlich heftige SmartyPants-Plugin), die mal mehr und mal weniger gut funktionieren. Auch meine Lösung ist nicht unfehlbar - sie weiß z.B. nichts mit verschachtelten Anführungszeichen anzufangen ("a "b" c" wird zu "a "b" c"), die korrekterweise ja in "a ›b‹ c" umgesetzt werden müssten.
Siehe auch "Die häufigsten Typofehler". Schon erstaunlich, was man alles falsch machen kann.
Update: Die Liste der Elemente, in denen typografische Anführungszeichen nichts zu suchen haben, ist jetzt leichter erweiterbar (bei Bedarf z.B. applet|object|select|textarea mit aufnehmen). Etwas schneller ist die neue Version dank des vereinfachten Ersetzungsteils auch.
Schau mal daß Du sowohl für Quellcode als auch normalen Text entsprechende Größenangaben nimmst. Hier unter Mozilla/Linux passen die sonst überhaupt nicht zusammen.
T$
Hmm, stimmt, der Code ist sehr schwer zu lesen, weil relativ klein.
mozillendeRené

Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.

[ ← Zurück zur Übersicht ]

Impressum & Datenschutz