Veröffentlichungsdatum: 28. März 2012
Änderungsdatum: 27. März 2023
suchen ersetzen search replace reguläre ausdrücke ausdruck regex
Zeichenketten in vielen Dateien in kurzer Zeit anpassen.
Änderungen in mehreren Dateien können Sie über das Werkzeug "Suchen und Ersetzen" auf Knopfdruck vornehmen. Hierfür steht Ihnen in jedem Projekt (Inhaltsprojekt, Assets, Global-Projekt) das Werkzeug zur Verfügung und beschränkt sich dort auf dieses Projekt.
Der Einsatz von regulären Ausdrücken beim Suchen gibt Ihnen zusätzlich eine sehr mächtige Funktion an die Hand, die entsprechende Sorgfalt mit dem Umgang dieses Werkzeuges erfordert. Beachten Sie hierzu die Hinweise am Ende des Artikels. Dort finden Sie auch Links zu Online-Tools, über welche reguläre Ausdrücke getestet werden können.
Für die "Suchen und Ersetzen" Beispiele empfehlen wir folgende Schrittfolge:
Beachten Sie beim "Suchen und Ersetzen" der Beschreibung (wd:description), dass dieses Tag in einer Datei mehrfach vorkommen kann. Z.B. wird das Tag bei Dateivorlagen zusätzlich zu den Metadaten (wd:meta) auch in den Templateinformationen (wd:asTemplate) verwendet!
Einzeltags für die Beschreibung (wd:description) in Dateien durch eine vordefinierte Beschreibung über reguläre Ausdrücke suchen und ersetzen:
<wd:description\s*/>
<wd:description>Ihre Beschreibung</wd:description>
Einzeltags und normale leere Tags für die Beschreibung (wd:description) in Dateien durch eine vordefinierte Beschreibung über reguläre Ausdrücke suchen und ersetzen:
(<wd:description\s*/>|<wd:description></wd:description>)
<wd:description>Ihre Beschreibung</wd:description>
Einzeltags und normale Tags (mit/ohne Inhalt) für die Beschreibung (wd:description) in Dateien durch eine vordefinierte Beschreibung über reguläre Ausdrücke suchen und ersetzen:
(<wd:description\s*/>|<wd:description>.*?</wd:description>)
<wd:description>Ihre Beschreibung</wd:description>
<wd:keywords>(\r\n|.*?)</wd:keywords>
<wd:keywords>ihre, keywords</wd:keywords>
<wd:cache[^>]+expires="(\d+|)"[^>]*\/>
<wd:cache expires="{wGetValueOfDefaultExtension()}"/>
Danach kann dann z.B. in den Standard-Dateieinstellungen vom Projektverzeichnis der Cache wie gewünscht eingestellt werden.
Beachten Sie, dass eine Datei-Cache bei Seiten mit Formularen nicht gesetzt sein sollte bzw. zumindest das Formular ohne Cache aufgerufen wird (wie in der jeweils aktuellen BASE umgesetzt (Framework-Funktion: wOutput::loadWithoutCache)).
Weiterhin sollten Sie den Datei-Cache auch nicht in folgenden Dateien setzen, sondern deaktivieren:
<wd:workflow[^>]+>
<wd:workflow path="{wGetValueOfDefaultExtension()}" groupExecute="{wGetValueOfDefaultExtension()}" deleteAfterApprove=""/>
Nach erfolgreichem Ersetzen können Sie in den Standard-Dateieinstellungen des Inhaltsprojektes einen Workflow hinterlegen, der dann von den Dateien geerbt wird, die entsprechend eingestellt sind.
Ggf. prüfen Sie, ob eventuell Dateien bestehen, die überhaupt kein workflow-Tag enthalten und setzen dies dort entsprechend.
<wd:version value="\d+"/>
<wd:version value="1"/>
<wd:language nodeID="[^"]+"/>
<wd:language nodeID=""/>
Beim erneuten Aufruf eines Verzeichnisses bzw. einer Datei werden die Sprachverknüpfungen i.d.R. neu geschrieben.
<wd:item[^>]+type="button.createFile".*?</wd:item>[\n\r\s\t]*(<wd:item[^>]+type="list.standard".*?<wd:fragment id="listtemplate" type="src.file">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/lists/upload.wFilelist.php)
$1
<wd:object.*<wd:object
Wenn ein Projekt z.B. über Neuinstallation von BASE 1.x auf 2.x umgestellt wird, oder Weblics® 2.x in BASE 1.x eingesetzt werden sollen, ist ggf. das Anpassen der 1.x Bildergalerien erforderlich. Am Beispiel der Fancybox Bildergalerie erhalten Sie nachfolgend ein Beispiel, um eine existierende 1.x Bildergalerie (vom Typ Fancybox) auf die Bildergalerie-Variante 2.x (Typ Fancybox) umzustellen (Pfade bitte individuell berücksichtigen).
<wd:fragment id="listtemplate" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/lists/galleryFancybox.wFilelist.php</wd:fragment>
<wd:fragment id="listtemplate" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/lists/gallery.wFilelist.php</wd:fragment> <wd:fragment id="layout" type="char.default">2</wd:fragment>
Die BASE wurde zum Assets-Verzeichnis eine kurze Zeit lang mit einer fehlerhaften Dokumentenerweiterung (wdExtension.php) für Binärdateien ausgeliefert (wd:edit doppelt, fehlendes wd:editExt Tag). Beim Öffnen der Bearbeitung erhalten Sie in solchen Fällen die Meldung "Das Edit Template dieser Datei existiert nicht!".
Um dies zu korrigieren, können Sie folgende Daten für Suchen und Ersetzen (in z.B. /de-wAssets/ ) verwenden (Systemverzeichnisse einbeziehen!):
<wd:templates> <wd:master path="{wGetValueOfDefaultExtension()}"/> <wd:edit path="{wGetValueOfDefaultExtension()}"/> <wd:edit path="{wGetValueOfDefaultExtension()}"/> <wd:view path="{wGetValueOfDefaultExtension()}"/> </wd:templates>
<wd:templates> <wd:master path="{wGetValueOfDefaultExtension()}"/> <wd:edit path="{wGetValueOfDefaultExtension()}"/> <wd:view path="{wGetValueOfDefaultExtension()}"/> <wd:editExt path="{wGetValueOfDefaultExtension()}"/> </wd:templates>
Soll z.B. in der Beschreibung von Dateien eine Jahreszahl geändert werden, aber der Text vor der Jahreszahl beibehalten werden, müssen Sie das hinsichtlich der Rückreferenzierung entsprechend im regulären Ausdruck berücksichtigen (siehe auch: php.net: preg_replace).
Nachfolgend ein Beispiel, um das Jahr 1972 in 1977 zu ändern (Option "Regulärer Ausdruck verwenden" muss aktiviert sein).
(<wd:description>.*)1972
${1}1977
Zu Überschriften-Elementen soll das Level geändert werden.
Nachfolgend ein Beispiel, um aus dem Level 4 einer Überschrift ein Level 2 zu machen (Option "Regulärer Ausdruck verwenden" muss aktiviert sein). Wenn der Text der Überschrift unterschiedlich ist, setzen Sie hier auch entsprechende reguläre Ausdrücke ein.
<wd:fragment id="title" type="char\.text">Unternehmen<\/wd:fragment>(\s+)<wd:fragment id="display" type="char\.display">h4<\/wd:fragment>
<wd:fragment id="title" type="char.text">Unternehmen</wd:fragment>$1<wd:fragment id="display" type="char.display">h2</wd:fragment>
<wd:navpoint[^>]+>
<wd:navpoint path="{wGetValueOfDefaultExtension()}" id=""/>
Prüfen Sie am besten mit der "Nur Suchen" Funktion, welche Dateien alle erfasst werden. Wenn Sie "Zeilen anzeigen" aktiviert haben, können Sie zudem kontrollieren, wie die aktuelle Einstellung zu einer Seite gesetzt ist.
Sofern Sie das normale Link-Element für das Setzen eines zurück-Links verwendet haben und dies auf das spezielle Weblic® / Element "Zurück-Link" umstellen wollen, können Sie dies über dieses Beispiel umstellen (Option "Regulärer Ausdruck verwenden" muss aktiviert sein).
<wd:item[^>]+type="link.standard".*?<a href="javascript:history.back\(\);"\s+title="Zurück">zurück<\/a>.*?<\/wd:item>
<wd:item type="link.back" uid="3bccc5aec50c30b3f9c359d76116e32e"> <wd:fragment id="text" type="char.text"/> <wd:fragment id="link" type="char.default"/> </wd:item>