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? :cry:

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**....

Code: Alles auswählen

	//
	$post_row = array(
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“ :grin:
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**....

Code: Alles auswählen

	//
	$post_row = array(
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?