eine Funktion in preg_replace

DDSD

Mitglied
Kann man in der Funktion preg_replace eine Funktion nutzen?
Ich versuche jetzt schon recht lange herum, aber bei mir funktioniert es nicht :(
Wenn ich folgenden Code probiere, ersetzt er das erste $1, aber bei dem in der Funktion getUploadName streikt er und führt dies nicht aus.

Habe Google schon benutzt und gesucht und da war bei der preg_replace-Beschreibung bei den Kommentaren immer wieder eine Funktion dabei, aber ich verstehe nicht warum es bei mir nicht geht :(

PHP:
$text = preg_replace("/\[IMG=(.*?)\]/i","<img src='".$config['page_url']."/images/uploads/$1.".getUploadName("$1")."' alt='' />",$text);
 
 function getUploadName($id) {
   global $prefix,$db;
   $query = "SELECT * FROM ".$prefix."uploads WHERE id = '".$id."'";
   $result = $db->query($query);
   $row = $db->fetch_array($result);
   return htmlentities($row['name']);
 }
 
Hallo,

das kann so nicht funktionieren. Bevor eine Funktion aufgerufen wird (in diesem Fall [phpf]preg_replace[/phpf]), werden zuerst alle Argumente ausgewertet. Der Aufruf von getUploadName erfolgt also nur einmal, und zwar bevor [phpf]preg_replace[/phpf] überhaupt zum Zug kommt.

Abhilfe schafft hier der Suchmustermodifikator e. Ein Beispiel dazu findet man auf der Handbuchseite zu [phpf]preg_replace[/phpf] unter Beispiel 4.

Grüße,
Matthias
 
Oke, danke :)
Das ist zwar irgendei kompliziert, aber es funktioniert wunderbar.

Jetzt habe ich nur noch eine Frage, wie man die GROß- und kleinschreibung unterscheiden kann?
 
Ohne „i“-Modifikator wird die Groß- und Kleinschreibung automatisch unterschieden.
 
Klar können auch mehrere Modifikatoren gleichzeitig angewandt werden. Notiere die Modifikatoren einfach nacheinander; die Reihenfolge ist irrelevant.
 
Da ich vorher und nachher einen Code habe und die Funktion ned so ausbauen will, da sie anders auch gebraucht wird, ist mir nur preg_replace() lieber ;)
Trotzdem danke, werd mir die Funktion mal merken.
 
Zurück