Beispiele für das Suchen & Ersetzen Werkzeug

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.

Beispiele für "Suchen und Ersetzen"

Für die "Suchen und Ersetzen" Beispiele empfehlen wir folgende Schrittfolge:

  1. Backup / Sicherung des zu durchsuchenden Verzeichnisses anlegen, um bei Problemen über ein Wiederherstellen des Backups schnell wieder den Stand vor dem Ersetzen herstellen zu können
  2. gewünschtes Projekt (z.B. /de) aufrufen und unter den Werkzeuge "Suchen und Ersetzen" auswählen
  3. Verzeichnis über "Suchen in" auswählen, zu dem Dateien rekursiv durchsucht und ersetzt werden soll
  4. ggf. die Dateitypen (z.B. php) angeben
  5. wenn Groß-/Kleinschreibung berücksichtigt werden soll, den Parameter aktivieren
  6. wenn im Suchen-Feld reguläre Ausdrücke verwendet werden, den Parameter hierfür aktivieren.
  7. über den Button "Nur Suchen" kann getestet werden, welche Dateien vom Vorgang erfasst werden; "Suchen und Ersetzen" führt den Vorgang schliesslich durch

Beispiel 1: Beschreibung (wd:description) mit regulären Ausdrücken rekursiv ändern

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:

Suchen nach:

<wd:description\s*/>

Ersetzen durch:

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

Suchen nach:

(<wd:description\s*/>|<wd:description></wd:description>)

Ersetzen durch:

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

Suchen nach:

(<wd:description\s*/>|<wd:description>.*?</wd:description>)

Ersetzen durch:

<wd:description>Ihre Beschreibung</wd:description>

Beispiel 2: Schlüsselwörter (wd:keywords) mit regulären Ausdrücken ersetzen

Suchen nach:

<wd:keywords>(\r\n|.*?)</wd:keywords>

Ersetzen durch:

<wd:keywords>ihre, keywords</wd:keywords>

Beispiel 3: Cache-Einstellung mit regulären Ausdrücken auf Erben einstellen

Suchen nach:

<wd:cache[^>]+expires="(\d+|)"[^>]*\/>

Ersetzen durch:

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

  • Suche-Seite
  • Seite empfehlen Seite
  • Kontakt- und Danke-Seite (auch andere Formulare)
  • RSS-Seite
  • Google-Sitemap
  • Newsletter-Formular Seiten
  • Errordocs-Seiten

Beispiel 4: Workflow über reguläre Ausdrücke auf Erben einstellen

Suchen nach:

<wd:workflow[^>]+>

Ersetzen durch:

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

Beispiel 5: Versionsnummer über reguläre Ausdrücke auf 1 zurücksetzen

Suchen nach:

<wd:version value="\d+"/>

Ersetzen durch:

<wd:version value="1"/>

Beispiel 6: Sprachknoten (nodeID) in Dateien und Verzeichniseinstellung zurücksetzen

Suchen nach:

<wd:language nodeID="[^"]+"/>

Ersetzen durch:

<wd:language nodeID=""/>

Beim erneuten Aufruf eines Verzeichnisses bzw. einer Datei werden die Sprachverknüpfungen i.d.R. neu geschrieben.

Beispiel 7: Datei hinzufügen Button mit regulären Ausdrücken ersetzen/löschen

Suchen nach:

<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)

Ersetzen durch:

$1

Beispiel 8: Mit regulären Ausdrücken mehrere wd:object Tags ausfindig machen

NUR Suchen nach:

<wd:object.*<wd:object

KEIN Ersetzen

Beispiel 9: Bildergalerie 1.x auf Weblic-Version 2.x anpassen

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

Suchen nach:

<wd:fragment id="listtemplate" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/lists/galleryFancybox.wFilelist.php</wd:fragment>

Ersetzen durch:

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

Beispiel 10: Fehlerhafte Dokumentenerweiterung anpassen

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!):

Suchen nach:

  <wd:templates>
    <wd:master path="{wGetValueOfDefaultExtension()}"/>       
    <wd:edit path="{wGetValueOfDefaultExtension()}"/>
    <wd:edit path="{wGetValueOfDefaultExtension()}"/>    
    <wd:view path="{wGetValueOfDefaultExtension()}"/>
  </wd:templates>

Ersetzen durch:

  <wd:templates>
    <wd:master path="{wGetValueOfDefaultExtension()}"/>
    <wd:edit path="{wGetValueOfDefaultExtension()}"/>
    <wd:view path="{wGetValueOfDefaultExtension()}"/>
    <wd:editExt path="{wGetValueOfDefaultExtension()}"/>
  </wd:templates> 

Beispiel 11: Jahreszahlen ersetzen und Text davor merken

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

Suchen nach:

(<wd:description>.*)1972

Ersetzen durch:

${1}1977

Beispiel 12: Überschriften-Level innerhalb Inhaltsbox ändern

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.

Suchen nach:

<wd:fragment id="title" type="char\.text">Unternehmen<\/wd:fragment>(\s+)<wd:fragment id="display" type="char\.display">h4<\/wd:fragment>

Ersetzen durch:

<wd:fragment id="title" type="char.text">Unternehmen</wd:fragment>$1<wd:fragment id="display" type="char.display">h2</wd:fragment>

Beispiel 13: Navigations-ID mit regulären Ausdrücken auf Erben einstellen

Suchen nach:

<wd:navpoint[^>]+>

Ersetzen durch:

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

Beispiel 14: Link-Element mit zurück-Link auf zurück-Link Element umstellen

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

Suchen nach:

<wd:item[^>]+type="link.standard".*?<a href="javascript:history.back\(\);"\s+title="Zurück">zurück<\/a>.*?<\/wd:item>

Ersetzen durch:

<wd:item type="link.back" uid="3bccc5aec50c30b3f9c359d76116e32e">
  <wd:fragment id="text" type="char.text"/>
  <wd:fragment id="link" type="char.default"/>
</wd:item>

Wichtige Hinweise

  •  Legen Sie vor jedem Suchen/Ersetzen Vorgang ein Backup des betroffenen Verzeichnisses an!
  • Es kann keine Gewähr für ein erfolgreiches Ersetzen übernommen werden!
  • In den einschlägigen Dokumentationen zu regulären Ausdrücken finden Sie weitere Beispiele und Einsatzmöglichkeiten.
  • Ab PHP 7.3x muss bei regulären Ausdrücken der Bindestrich auch escaped werden!
    z.B. anstatt: preg_match('/[\w-.]+/', '')
    dann wie folgt: preg_match('/[\w\-.]+/', '')