Doppelreplace - replace in replace?

Chris2130

Well-known member
ID: 308573
L
13 Januar 2008
527
24
Hi, ich habe mal wieder eine Frage^^

ich nutze preg_replace und möchte eine Function aufrufen. Das klappt auch , allerdings wird in der function str_replace genutzt. Und der rückgabewert geht irgentwie gar nicht durch diesen replace. Wie kann ich das trotzdem nochmal replacen?
 
er sucht wohl einen rekursives str_replace

ruf einefach rekursiv str_replace auf, bis sich der inhalt vorher und nach dem replacen nicht mehr unterscheidet.
 
Ich blicks immer noch ned :mrgreen:

PHP:
str_replace($search2, $replace2,
  str_replace($search1, $replace1, $string)
)
is doch gleichwertig mit
PHP:
str_replace(
  array($search1, $search2),
  array($replace1, $replace2),
  $string
)
.
Und wenn die Suchbegriffe und ihre Ersetzungen sich überschneiden, halt strtr() stattdessen.
 
Naja, also , ich will im replace eine Function aufrufen. Der Function wird der input $1 gegeben, der ja im preg_replace übergeben wurde. Und die function soll jetzt dieses $1 nochmal untersuchen und auch splitten. Allerdings funktioniert da werder splitten, noch replacen. Wenn man die function außerhalb aufruft, also mit nem normalen Parameter, dann funktioniert das.
 
In der Ersetzung was aufrufen? Dann musst du preg_replace_callback() benutzen. Nur damit hast du die Möglichkeit, innerhalb eines Ersetzungsvorgangs Code auszuführen.
 
In der Ersetzung was aufrufen? Dann musst du preg_replace_callback() benutzen.
Je nach Umfang der notwendigen Bearbeitung des Suchergebnisses wäre ggf. auch noch der e-Modifikator beim 'normalen' preg_replace() interessant.
Die Lösung mit preg_replace_callback() sollte aber insbesondere bei umfangreichen Nachbearbeitungen angebrachter sein. ;)
 
ok schon mal vielen dank, allerdings habe ich jetzt noch ein Problem mit der Funktion.

ich hab das wie folgt aufgebaut:

PHP:
$text = preg_replace_callback("|\[IMG\](.*)\[/IMG\]|Uism",printimage("$1","0"),$text);


Allerdings kommt dann folgende Fehlermeldung:
Code:
Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, '<img src = '$1'>
 
PHP:
$text = preg_replace_callback("|\[IMG\](.*)\[/IMG\]|Uism", "printimage", $text);
Ein Callback auf eine normale Funktion außerhalb jeder Klasse ist in PHP nichts anderes, als ein String mit dem Namen der Funktion. ;)
 
PHP:
$text = preg_replace_callback("|\[IMG\](.*)\[/IMG\]|Uism", "printimage", $text);
Ein Callback auf eine normale Funktion außerhalb jeder Klasse ist in PHP nichts anderes, als ein String mit dem Namen der Funktion. ;)

Hä?? Aber es müssen doch auch parameter übergeben werden ??
 
ok, soweit funktioniert jetzt alles. Aber kann man da auch mehrere Parameter angeben?? Dazu hab ich nix gefunden.
 
Aber kann man da auch mehrere Parameter angeben?? Dazu hab ich nix gefunden.
Natürlich nicht.
Ein Callback ist eben ein Callback. Du hast keinen Einfluss darauf, wie du zurückgerufen wirst; das ist vorgegeben. Dieser Callback liefert dir nur einen Parameter, nämlich das Trefferarray.