Seite 1 von 3
[3.3] Typographische Anführungszeichen
Verfasst: 25.08.2022 09:54
von liesenfeld
Gibt es eine Funktion oder Extension (ähnlich wie bei Wordpress), die normale Anführungszeichen automatisch zu typographisch korrekten machen?
Also das: "Hallo" sagte er
zu: „Hallo“ sagte er
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 11:19
von liesenfeld
Hat niemand eine Idee? Das muss doch auch noch andere betreffen, oder bin ich da zu pedantisch?

Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 12:00
von BNa
Hallo erstmal,
kann schonmal etwas dauern, bis dazu konkret was als Antwort kommt.
Das lässt sich auf Code-Ebene bestimmt leicht umsetzen.
Eine EXT wäre dazu m.E. fast zuviel...
Sollte bei der Ersetzung von z.B.
post_text
dann ca. so funktionieren...
https://de.comp.lang.php.misc.narkive.c ... deln#post7
Code: Alles auswählen
echo $text = '"Hallo", sagte er, "wie geht es Ihnen heute?"';
$text = preg_replace('#"(\w)#', "„\$1", $text);
$text = preg_replace('#([\w|.?! ])"#', "\$1“", $text);
echo "<br />", $text;
/* Ausgabe:
* "Hallo", sagte er, "wie geht es Ihnen heute?"
* „Hallo“ , sagte er, „wie geht es Ihnen heute?“
*/
... oder auch so:
https://www.php-resource.de/forum/php-d ... post128004
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 12:37
von liesenfeld
Danke für diese Idee. Auf PHP Ebene könnte ich das leicht schreiben, da kenne ich mich gut genug aus. Ich wüsste nur nicht, wo ich jetzt dieses PHP Schnipsel integrieren soll?
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 12:54
von BNa
Die
viewtopic.php
sollte dazu ausreichen, geht ja warscheinlich nur um die Darstellung im Post, also entweder
hiervor**....
maßgeblich ist hier die Variable
$message
.
Diese vor dem letztgenannten
$post_row
array via
preg_replace
o.ä. ändern.
Eventuell erstmal ein
echo()
oder
var_dump()
von
$message
vor dem
$post_row
array
und mal ein Live-Posting mit
"irgendwas_in_anführungszeichen"
betrachten.
...**oder davor:
Code: Alles auswählen
$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
wobei hierbei
$row['post_text']
relevant ist.
Viel Glück
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 13:13
von liesenfeld
Hey super, Danke. Da bastel ich jetzt mal ein wenig rum und denke, dass ich das hinkriege mit deinen Tips.
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 13:30
von liesenfeld
BNa hat geschrieben: 29.08.2022 12:54
...**oder davor:
Code: Alles auswählen
$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
wobei hierbei
$row['post_text']
relevant ist.
Ah, da funktioniert es nicht, weil da schon das komplette HTML geparst ist. Da wird dann alt="bla" zu alt=„bla“
Ich versuche es mal an der anderen Stelle...
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 13:32
von BNa
Achja, Du musst in der regex
noch jegliches Zeichen
direkt vor dem einleitenden " und nach dem ausleitenden " ausschließen.
Also außer Leerzeichen davor/danach sollte die regex das ausschließen.
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 13:36
von liesenfeld
BNa hat geschrieben: 29.08.2022 12:54
Die
viewtopic.php
sollte dazu ausreichen, geht ja warscheinlich nur um die Darstellung im Post, also entweder
hiervor**....
maßgeblich ist hier die Variable
$message
.
Diese vor dem letztgenannten
$post_row
array via
preg_replace
o.ä. ändern.
Perfekt! So funktioniert es. War ganz einfach:
In
viewtopic.php
in Zeile 1764 einfach folgendes eingefügt:
Code: Alles auswählen
$rohtext = $row['post_text'];
$rohtext = preg_replace('#"(\w)#', "„\$1", $rohtext);
$rohtext = preg_replace('#([\w|.?! ])"#', "\$1“", $rohtext);
//$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
$message = generate_text_for_display($rohtext, $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
Re: [3.3] Typographische Anführungszeichen
Verfasst: 29.08.2022 13:45
von liesenfeld
Zu früh gefreut

Sobald eine Videoeinbettung drin ist, kommt ein Rendererfehler, denn dann wird die URL falsch ausgegeben:
Code: Alles auswählen
<r>Vor einiger Zeit habe ich zusammen mit der renommierten Rohkost-Chefin Ute Ludwig ein sehr ausführliches Video zum <FADE><s>[fade]</s>gesündesten Frühstück der Welt<e>[/fade]</e></FADE> gemacht. Ich hoffe, dass es dir spannende Einblicke in diese Thematik gibt <E>:lecker:</E> <br/>
<E>:dirk:</E><br/>
<VIMEO content0=„615376572“><s>[vimeo]</s>https://vimeo.com/615376572<e>[/vimeo]</e></VIMEO></r><br />
Hier ist das Problem: VIMEO content0=„615376572“
Wie kann ich das preg_replace Statement so ändern, dass das " nur ersetzt wird, wenn davor ein Leerzeichen ist?