Suchen, Ersetzen und reguläre Ausdrücke, Teil 2
28. Februar 2009, 16:21Diese Funktion führt eine Suchen&Ersetzen-Aktion auf einem Text aus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function searchReplace($search, $replace, $txt, &$hits = array()) { $matches = array(); $sItems = array(); $rItems = array(); $mCounter = 0; $rCounter = substr_count($replace, '%s'); $replace = str_replace('%s', '%1$s', $replace); preg_match_all($search, $txt, $matches, PREG_OFFSET_CAPTURE); $matches = $matches[0]; $mCounter = count($matches); if($mCounter > 0) { for($i = 0; $i < $mCounter; $i++) { $sItems[$i] = substr($txt, $matches[$i][1], strlen($matches[$i][0])); $hits[$i] = $sItems[$i]; $rItems[$i] = sprintf($replace, $sItems[$i]); } $txt = str_replace($sItems, $rItems, $txt); } return $txt; } |
Als erster Parameter wird ein regulärer Audruck erwartet.
Der zweite Parameter ist eine Zeichenkette, mit der die gefundenen Werte ersetzt werden sollen. Enthält die Zeichenkette die Formatierungsanweisung ‘%s’ (Beschreibung siehe sprintf), so wird jedes Vorkommen dieser Anweisung durch den gefundenen Wert ersetzt.
Als dritter Parameter erwartet die Funktion den Text, auf dem die Aktion ausgeführt werden soll.
Der vierte Parameter ist optional. Dabei kann ein Array per Referenz übergeben werden, das nach der Ausführung der Aktion die gefundenen Werte enthält.