Hab eine kleine Extension (Key: regex) geschrieben. Mit dieser kann man den Quellcode (alles zwischen den Body-Tags) mit Regulären Ausdrücken "bearbeiten".
Syntax ist folgende:
patternI = /regulärer Ausdruck/
patternI.replacemant = Ersatztext
d.h. beliebig viele Ausdücke die sich nur im Index (I) unterscheiden.
Beispiel mit drei RegEx:
config.regex {
pattern1 = /###name###/i
pattern1.replacemant = ERSETZT
#Das ® als HTML nur ohne Leerzeichen
pattern2 = /& reg;/
pattern2.replacemant = copyright
#Kommentare entfernen
pattern3 = /<!--.*-->/
pattern3.replacemant =
}
config.regex {
#Das ® als HTML nur ohne Leerzeichen
pattern1 = /®/
pattern1.replacemant = <sup>®</sup>
}
Ersetzt leider ® nicht durch ein hochgestelltes ®.
Zweiter Versuch:
config.regex {
# (R) umwandeln
pattern1 = /(R)/
pattern1.replacemant = <sup>®</sup>
}
Ersetzt ALLE grossen R (auch ohne Klammern) im Text und im Quellcode durch (®). Warum bleiben die Klammern sichtbar.
Wenn ich noch erfahren darf, wie ich nur (R) in Klammern ersetzen kann, dann wäre das eine gute Lösung für mich.
Noch nie mit Regulären Ausdrücken gearbeitet? Runde Klammern haben eine besondere Funktion, die mußt man "escapen"
versuchsmal so:
config.regex {
# (R) umwandeln
pattern1 = /\(R\)/
pattern1.replacemant = <sup>®</sup>
}
Im Grunde genommen ist das die "preg_replace" - Funktion durch die man den Content "jagd"
PHP-Doku zu preg_replace:
http://de.php.net/manual/de/function.preg-replace.php
PS: Hast PN
Danke für den Tipp!
Aberwie schreib ich die Story, wenn ich 2 Wörter - z.b "Max Mustermann" finden und "stylen" soll???
Die beiden Wörter stehen immer in der gleichen Reihenfolge und nur wenn Sie in der Kombination stehen....
lg Pewe
Besten Dank für die Hilfe. Problem gelöst :-)
@Pewe_at:
z.B. so:
config.regex {
# Wenn Gross- und Kleinschreibung eine Rolle spielt
pattern1 = /Max Mustermann/
# und wenn sie keine spielt so:
# pattern1 = /Max Mustermann/i
pattern1.replacemant = <span style="color: #ff0;">Max Mustermann</span>
}
das wär's, aber leider passiert mit dem Script bei mir garnix! :o
Evtl. am Ende des Templates anfügen damit das Rendern erst zum Schluß kommt.
Nö! Hat leider auch keinerlei Wirkung gezeigt!
Ist da eventuel zusätzlich noch etwas notwendig, das ich ev. nicht im System haben könnte?
mfg Pewe_at
Ne eigentlich nicht! Klappt es mit anderen Zeichen auch nicht?
Ne, das Script macht leider gar nichts!
Ich hab sogar den "Tippfehler" (replacemant ) auf replacement ausgebessert.... :o ...wenn's einer ist.... :o
Vom Alex hab ich noch Tipps bekommen, die beruhen allerdings auf eigenen Ext, die grundlegend was anderes machen sollten. Diese, eigentlich einfache Funktion klappt aber leider nicht. Ein "Wort" hab ich geschafft, bei 2 gehts nicht mehr.
lg Pewe
1. Saug dir neue Version (0.0.3)
2. Prüfe Unter Template->Constant Editor -> Category: PLUGIN.REGEX ob das Plugin aktiviert ist (1 muß da stehen)
3. Wie ist dein Leerzeichen zwischen Max und Mustermann definiert (& nbsp; ,& #160; oder implizites Leerzeichen)? Pattern Matching muß zu 100% stimmen sonst klappts nicht!!!
Versuch das (da ist ein Leerzeichen bei & nbsp; und bei & #160; welche du herausnehmen solltest:
config.regex {
pattern1 = /\bMax(?:(?:& nbsp;)|\s|(?:& #160;))+Mustermann/
pattern1.replacement = <span style="color: #ff0;">Max Mustermann</span>
}
Jetzt hab ich das halbe System nochmal übergedreht, alles alte rausgeschmissen, deine regex 0.0.3 reingespielt und:
Es läuft so wie's sein soll! :p
Sogar der erste Versuch mit:
config.regex {
# Wenn Gross- und Kleinschreibung eine Rolle spielt
# pattern1 = /Max Mustermann/
# und wenn sie keine spielt so:
pattern1 = /Max Mustermann/i
pattern1.replacement = <b>Max Mustermann</b>
}
läuft schon super! 😃
Der zweite Tipp mit:
config.regex {
pattern1 = /\bMax(?:(?:& nbsp;)|\s|(?:& #160;))+Mustermann/
pattern1.replacement = <span style="color: #ff0;">Max Mustermann</span>
}
sieht auf den ersten Blick :o etwas verwirrend aus, ist aber perfekt gelöst!
Ich nehme an, dass irgend einer der notwenigen Teile auf meinem Testsystem zerschossen war - sonst war ja irgendwas passiert...
Danke nochmal!
lg Pewe_at
Olla!
Anbei noch eine reine TS-Lösung - obwohl der Gedanke mit regEx arbeiten zu könen, auch sehr interessant ist 🙂.
Diese ersetzt den String CPRGHT mit < sup >®< /sup >
# replace CPRGHT with <sup>®</sup>
# headers
lib.stdheader.10.setCurrent.parseFunc.short.CPRGHT = <sup>®</sup>
# regular content
tt_content.text.20.parseFunc.short.CPRGHT = <sup>®</sup>
# menues
tt_content.menu.20.stdWrap.parseFunc.short.CPRGHT = <sup>®</sup>
lib.parseFunc.short {
CPRGHT = <sup>®</sup>
}
#rte
lib.parseFunc_RTE.short {
CPRGHT = <sup>®</sup>
}
gruss, fuss