[3.3] Typographische Anführungszeichen

Du suchst eine bestimmte Extension, weißt aber nicht genau wo bzw. ob sie überhaupt existiert? Du kannst hier die von dir gewünschte/gesuchte Extension beschreiben ...
Falls ein Extension-Autor eine der Anfragen hier aufnimmt, um eine neue Extension zu entwickeln, geht's in Extensions in Entwicklung weiter.
liesenfeld
Mitglied
Beiträge: 26
Registriert: 02.08.2022 13:14

Re: [3.3] Typographische Anführungszeichen

Beitrag von liesenfeld »

Nee, das klappt nicht, weil es auch im reinen Datenbanktext schon HTML-Code gibt. Damn, das kann nicht umgangen werden...
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [3.3] Typographische Anführungszeichen

Beitrag von BNa »

Doch, das geht:
BNa hat geschrieben: 29.08.2022 13:32 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.
Das hier mal als Inspiration anschauen (hierbei ist preg_match() evtl. Dein Freund):
Leerzeichen zulassen

Das Hinzufügen beliebiger Zeichen zu unserem regulären Ausdruck gilt sogar für Leerzeichen. In diesem Beispiel haben wir noch ein Leerzeichen in die Zeichenklasse aufgenommen:

Code: Alles auswählen

if (!preg_match("#^[a-zA-Z0-9äöüÄÖÜ ]+$#", $text)) {
   echo 'String enthält auch andere Zeichen.';  
} else {
   echo 'String enthält nur Buchstaben, Zahlen und Leerzeichen.';
}
Und das "negativ" umsetzen, (ähnlich wie im Beispiel) if (!preg_match(blabla:
https://www.askingbox.de/tipp/php-nur-b ... g-zulassen

Also nur, wenn ein Leerzeichen davor und danach von " ist, wandle um, ansonsten mache nichts.
Quasie anders rum denken, regex für Leerzeichen (davor und danach von ") setzen (also via preg_match())
und Umwandlung via preg_replace() ausschließen, wenn Leerzeichen davor und danach von " nicht vorhanden...

Weiteres Futter:
https://forum.planet3dnow.de/index.php? ... en.291646/
https://www.php.net/manual/de/function.preg-match.php
Benutzeravatar
IMC
Mitglied
Beiträge: 543
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Typographische Anführungszeichen

Beitrag von IMC »

Wenn man sich es sehr leicht machen möchte bindet man dieses Skript in der overall_footer.html hinter der Zeile {$SCRIPTS} ein.
https://smartquotes.js.org/
Unterliegt der MIT-Lizenz.

Im Skript müssen für deine gewünschte Funktion nur 4 Stellen geändert werden.
Finde \u201C und ersetze diese durch \u201E (Unicode-Zeichen).

Edit: Es gibt einen Fork der die Deutschen Besonderheiten berücksichtigt.
https://github.com/k-nut/smartquotesjs
Zuletzt geändert von IMC am 29.08.2022 18:05, insgesamt 1-mal geändert.
Gruß, Thorsten
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7874
Registriert: 24.05.2010 08:31
Kontaktdaten:

[3.3] Typographische Anführungszeichen

Beitrag von Kirk »

@liesenfeld
Solange der letzte Beitrag in einem Thema von dir stammt und noch kein anderer Benutzer geantwortet hat, darfst du erst nach einer Wartezeit erneut antworten.
Siehe dazu Knowledge Base - Der kleine phpBB.de-Knigge - unsere Hausordnung Bereich Topic-Bumping / Mehrfachantworten


Mit freundlichen Grüßen,
dein phpBB.de-Team
liesenfeld
Mitglied
Beiträge: 26
Registriert: 02.08.2022 13:14

Re: [3.3] Typographische Anführungszeichen

Beitrag von liesenfeld »

Danke für die viele Hilfe. Ich bin jetzt so folgendem Ergebnis gekommen (falls jemand anderes auch das gleiche Problem haben sollte):

1) Ersetzung der Zollzeichen durch typographische Anführungszeichen gehen nur bedingt. Das vordere kann man aus dem Datenbanktext bedenkenlos ersetzen, das hintere nicht. Denn es gibt zu viele HTML-Anweisungen, die schon im Feld phpbb_posts stehen, die dadurch korrumpiert werden. Daher habe ich es jetzt so gemacht:

Code: Alles auswählen

//In viewtopic.php in Zeile 1764 einfach folgendes eingefügt:
//(Suchen nach: $message = generate_text_for_display($row)

	$rohtext = $row['post_text'];
	$rohtext = str_replace(" \"", ' „', $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);
	
Das sieht dann so aus: lass es dir „munden"
und damit bin ich zufrieden

2) Ich habe noch an der zweiten Stelle, wo also das $message schon quasi ausgabefertig ist eine zweite Ersetzung reingemacht. Dadurch kann ich beliebige Ersetzungen machen. In meinem Fall :hr: zu <hr> mit Styling.

Code: Alles auswählen

//in Zeile 2032

	$message = str_replace(':hr:', '<hr style="width: 50%; height:unset; margin:auto;">', $message);
	//
	$post_row = array(
Benutzeravatar
IMC
Mitglied
Beiträge: 543
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Typographische Anführungszeichen

Beitrag von IMC »

Vielleicht ist dies die Lösung für dich.
https://github.com/IMC-GER/phpBB-Curly-Quotes
Wird nach und nach weiter entwickelt.
Gruß, Thorsten
liesenfeld
Mitglied
Beiträge: 26
Registriert: 02.08.2022 13:14

Re: [3.3] Typographische Anführungszeichen

Beitrag von liesenfeld »

Ah - thank you for the hint. Will check it out and report back ;-)
...
No - doesn't work:

Code: Alles auswählen

Fatal error: Uncaught Error: Call to undefined function imcger\curlyquotes\event\str_contains() in /pages/51/66/d0015911/home/htdocs/heilforum.de/ext/imcger/curlyquotes/event/main_listener.php:96 Stack trace: #0 /pages/51/66/d0015911/home/htdocs/heilforum.de/ext/imcger/curlyquotes/event/main_listener.php(51): imcger\curlyquotes\event\main_listener->get_browser_lang('de') #1 /pages/51/66/d0015911/home/htdocs/heilforum.de/cache/production/container_4335734bbdd20f586549a504dff5f80c.php(3783): imcger\curlyquotes\event\main_listener->__construct(Object(phpbb\user), Object(phpbb\request\request), Object(imcger\curlyquotes\core\fixer)) #2 /pages/51/66/d0015911/home/htdocs/heilforum.de/cache/production/container_4335734bbdd20f586549a504dff5f80c.php(3009): phpbb_cache_container->getImcger_Curlyquotes_ListenerService() #3 /pages/51/66/d0015911/home/htdocs/heilforum.de/vendor/symfony/event-dispatcher/EventDispatcher.php(231): phpbb_cache_container->{closure}() #4 /pages/51/66/d0015911/home/htdocs/heilforum.de/vendor/symfony/event-di in /pages/51/66/d0015911/home/htdocs/heilforum.de/ext/imcger/curlyquotes/event/main_listener.php on line 96
Zuletzt geändert von Kirk am 10.09.2022 10:40, insgesamt 1-mal geändert.
Grund: Unnötiges Komplettzitat entfernt
Benutzeravatar
IMC
Mitglied
Beiträge: 543
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Typographische Anführungszeichen

Beitrag von IMC »

Die Extension benötigt min. php 8.0. Wenn du nicht die Möglichkeit hast höher zu gehen könnte ich dies noch ändern.
php 7 erreicht jedoch am Ende des Jahr sein Lebensende. Dann sollte man eh hoch stufen.
Gruß, Thorsten
liesenfeld
Mitglied
Beiträge: 26
Registriert: 02.08.2022 13:14

Re: [3.3] Typographische Anführungszeichen

Beitrag von liesenfeld »

Ah, wie dämlich von mir. Ich hatte für das Verzeichnis vergessen auf 8.0 umzustellen :-?
Habe ich jetzt gemacht und es kommt keine Fehlermeldung mehr. Scheint gut zu funktionieren, allerdings werden Zitate zu Beginn des Beitrages nicht ersetzt:

"Ich denke, also bin ich"
Bleibt unverändert.

Er sagt "ich denke, also bin ich"
Wird ersetzt.
Benutzeravatar
IMC
Mitglied
Beiträge: 543
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Typographische Anführungszeichen

Beitrag von IMC »

Danke für die Rückmeldung.
Jetzt sollte auch am Zeilenanfang ersetzt werden. Ist im Main korrigiert.
https://github.com/IMC-GER/phpBB-Curly- ... s/main.zip
Gruß, Thorsten
Antworten

Zurück zu „Extension Suche/Anfrage“