26. April 2024

PHP: preg_replace – Strings mit regulären Ausdrücken suchen und ersetzen

Sehr häufig möchte man in PHP Scripten Strings nach Mustern durchsuchen und ersetzen. Hat ein Nutzer z.B. nach bestimmten Schlagworten gesucht, möchte man diese mittels eines PHP Scripts hervorheben (siehe Beispiel unten).

Zum Glück bietet PHP von Haus aus die Funktion preg_replace an, mit der solche Vorhaben ganz einfach realisierbar sind.

PHP: preg_replace

Der Aufruf der Funktion preg_replace könnte zum Beispiel so aussehen:

<?php
$string = "D1eser Str1ng enthaelt Zahlen, d1e ersetzt werden sollen.";
$searchpattern = "[1]";
$replace = "i";

echo $string."<br>";
echo preg_replace($searchpattern, $replace, $string);

?>

Der Code führt zu folgender Ausgabe:

D1eser Str1ng enthaelt Zahlen, d1e ersetzt werden sollen.
Dieser String enthaelt Zahlen, die ersetzt werden sollen.

Wie sich unschwer erkennen lässt, wurden die 1er durch i ersetzt. Dieses einfache Beispiel zeigt, wie man die funktion preg_replace richtig anwendet. Ein ausführlicheres Beispiel mit Anwendungsbezug folgt:

Mit preg_replace Suchbegriffe hervorheben

Ein häufiger Anwendungsfall ist, dass eingegebene Suchbegriffe in einem Text hervorgehoben werden sollen. Das ließe sich mit preg_replace wiefolgt lösen:

 <?php
$string = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget 
dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur 
ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla 
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. 
In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede 
mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. 
Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, 
eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. 
Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. 
Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. 
Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, 
sit amet adipiscing sem neque sed ipsum. 
Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem.";

$suchbegriff = "nisi";
$replace = "<span style='color: red; background-color: yellow; font-weight: bold; padding: 2px;'>"
        .$suchbegriff.
        "</span>";

echo "<u>Suche nach: ".$suchbegriff."</u><br>";
echo preg_replace("/".$suchbegriff."/", $replace, $string);

?> 

Der Code führt zu folgender Ausgabe:

Suche nach: nisi
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert