Wort Ersetzer plugin
Wort Ersetzer plugin
Hi
Ich habe 2 Wortersetzer - Plugins eingerichtet, das erste nimmt eine Umformung eines acronyms in einen url vor und das zweite schreibt das acronym aus.
Jetzt ist mir ein Verhalten dieses Plugins aufgefallen, nämlich, wenn ich das acro als ERSTES oder als LETZTES "Wort" schreibe, wird es nicht umgewandelt also als krasses Beispiel sieht die Umwandlung l1l = LustaufLeben so aus:
Eingabe:
l1l
l1l
l1l
l1l
l1l
l1l
l1l
l1l
l1l
Ausgabe:
l1l
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
l1l
Bug oder Feature ?
lg serels
Ich habe 2 Wortersetzer - Plugins eingerichtet, das erste nimmt eine Umformung eines acronyms in einen url vor und das zweite schreibt das acronym aus.
Jetzt ist mir ein Verhalten dieses Plugins aufgefallen, nämlich, wenn ich das acro als ERSTES oder als LETZTES "Wort" schreibe, wird es nicht umgewandelt also als krasses Beispiel sieht die Umwandlung l1l = LustaufLeben so aus:
Eingabe:
l1l
l1l
l1l
l1l
l1l
l1l
l1l
l1l
l1l
Ausgabe:
l1l
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
LustaufLeben
l1l
Bug oder Feature ?
lg serels
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Wort Ersetzer plugin
Hi!
Das ist ein Feature; zur Wort-Isolation wird vorausgesetzt, dass davor oder danach schon Inhalt steht, da der reguläre Ausdruck etwas davor erwartet... Ansonsten würde nämlich z.b. bei der Umformung von "in" nicht nur " in " ersetzt sondern auch "Garvin"...
Viele Grüße,
Garvin
Das ist ein Feature; zur Wort-Isolation wird vorausgesetzt, dass davor oder danach schon Inhalt steht, da der reguläre Ausdruck etwas davor erwartet... Ansonsten würde nämlich z.b. bei der Umformung von "in" nicht nur " in " ersetzt sondern auch "Garvin"...
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Re: Wort Ersetzer plugin
Sorry, aber das verstehe ich nicht, dazu gibt es doch den "replacement - character".garvinhicking wrote:Hi!
Das ist ein Feature; zur Wort-Isolation wird vorausgesetzt, dass davor oder danach schon Inhalt steht, da der reguläre Ausdruck etwas davor erwartet... Ansonsten würde nämlich z.b. bei der Umformung von "in" nicht nur " in " ersetzt sondern auch "Garvin"...
Viele Grüße,
Garvin
Außerdem erklärt das nicht, warum das letzte Wort auch nicht umgewandelt wird - siehe mein Beispiel.
Wenn ich jetzt also ein acronym habe und einen Satz mit diesem beginnen will, muß ich jedesmal daran denken, dass das am Anfang und am Ende eines Eintrages nicht funktioniert ?
Und ein "Feature" das nur den Spezialfall "erste Zeichen eines Eintrages oder letzte Zeichen eines Eintrages" betrifft erscheint mir doch recht seltsam, oder ?
Denn ... vor dem letzten l1l in meinem Beitrag steht ja jede Menge Text ...
lg serels
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Wort Ersetzer plugin
Hi!
Doch, denn wie gesagt der Reguläre Ausdruck erwartet mindestens ein Zeichen VOR oder NACH dem Wort. Beides trifft auf das erste und letzte Wort nicht zu.
Der eingesetzte Reguläre Ausdruck findest sich in der serendipity_event_contentrewrite.php Date in Zeile 277:
Wenn da jemand eine funktionierende Möglichkeit findet den RegExp umzuschreiben sodass er nach wie vor Wörter erfasst ohne ein Zwischenwort zu transferieren, dann nehme ich den Patch gerne auf.
Das Rewrite-Zeichen ist ja kein Pflichtzeichen, soweit ich mich erinnere.
Grüße,
Garvin
Doch, denn wie gesagt der Reguläre Ausdruck erwartet mindestens ein Zeichen VOR oder NACH dem Wort. Beides trifft auf das erste und letzte Wort nicht zu.
Der eingesetzte Reguläre Ausdruck findest sich in der serendipity_event_contentrewrite.php Date in Zeile 277:
Code: Select all
$regex = '°([^\d\w])(' . preg_quote($v_from) . ')([^\d\w])°msU';
Das Rewrite-Zeichen ist ja kein Pflichtzeichen, soweit ich mich erinnere.
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
kleinerChemiker
- Regular
- Posts: 765
- Joined: Tue Oct 17, 2006 2:36 pm
- Location: Vienna/Austria
- Contact:
Re: Wort Ersetzer plugin
vermutlich kann man das einfacher auch "sagen", aber wie wärs damit?
Code: Select all
$regex = '°([^\d\w])(' . preg_quote($v_from) . ')([^\d\w])|^(' . preg_quote($v_from) . ')([^\d\w])|([^\d\w])(' . preg_quote($v_from) . ')$°msU';-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Wort Ersetzer plugin
Hi!
Hm, sind diese drei "oder"-Strings nicht relativ teuer, weil jeder reguläre Ausdruck quasi dreimal gegen jedes Wort geprüft wird?
Grüße,
Garvin
Hm, sind diese drei "oder"-Strings nicht relativ teuer, weil jeder reguläre Ausdruck quasi dreimal gegen jedes Wort geprüft wird?
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
kleinerChemiker
- Regular
- Posts: 765
- Joined: Tue Oct 17, 2006 2:36 pm
- Location: Vienna/Austria
- Contact:
Re: Wort Ersetzer plugin
inwiefern das mehrarbeit bedeutet kann ich schlecht beurteilen. bin auch nicht so der regex-guru, aber ich bin überzeugt, daß man das noch einfacher machen kann. wird die regex bei jedem anzeigen des artikels oder nur beim speichern aufgerufen? wenns gleich beim speichern geändert wird, dann sollte der impact ja recht egal sein.
edit:
ich glaub, ich hätte eine lösung:
edit:
ich glaub, ich hätte eine lösung:
Code: Select all
$regex = '°(\b(' . preg_quote($v_from) . ')\b°msU';
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Wort Ersetzer plugin
Hi!
Die wird bei jeder Anzeige ausgeführt (es sei denn man nutzt das caching plugin).
Ich kam vorhin noch auf folgende Variante:
Evtl mal alle drei Varianten probieren?
Grüße,
Garvin
Die wird bei jeder Anzeige ausgeführt (es sei denn man nutzt das caching plugin).
Ich kam vorhin noch auf folgende Variante:
Code: Select all
$regex = '°([^\d\w]|^)(' . preg_quote($v_from) . ')([^\d\w]|$)°msU';
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
kleinerChemiker
- Regular
- Posts: 765
- Joined: Tue Oct 17, 2006 2:36 pm
- Location: Vienna/Austria
- Contact:
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Wort Ersetzer plugin
Das weiß ich nich, aber könnte ja sein. *g*kleinerChemiker wrote:ist das gültige syntx?
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
kleinerChemiker
- Regular
- Posts: 765
- Joined: Tue Oct 17, 2006 2:36 pm
- Location: Vienna/Austria
- Contact:
Re: Wort Ersetzer plugin
das glaub ich nicht, timgarvinhicking wrote:Das weiß ich nich, aber könnte ja sein. *g*kleinerChemiker wrote:ist das gültige syntx?
ich glaub nicht, daß oder auch bei modifikatoren anwendbar ist. \b steht für word-boundery, sollte also eigentlich funktionieren. ich hoffe zumindest, daß kein zeichen davor auch als boundery gilt *g*