haltich: Problem mit str_replace

hi forum
hab schon ein bisschen gesucht, aber nix gefunden da ich auch nich weiß nach was ich wirklich suchen soll. nun aber zu meinem problem:
wenn ich folgenden code ausführe bekomme ich die ausgabe "Bananen" obwohl "mail" garnicht in $text enthalten ist.

  
<?php  
$text ='gdf fdgbd fgdsgh dfg sdf gsdg sdf gdsf gsd fgsd gsd fg dfgs';  
  
$text =str_replace("mail", test(),$text);  
  
  
function test(){  
 echo 'Bananen<br>';  
return 'E-Mail';  
}  
?>  

Das blöde ist, dass ich nicht jedesmal wenn ich einen text überprüfe "Bananen" als ausgabe haben möchte. Sondern nur wenn mail enthalten ist.
Also kann man das irgendwie verhindern oder umgehen?

mfg
 haltich

PS: mit preg_replace passiert das selbe

  1. Das blöde ist, dass ich nicht jedesmal wenn ich einen text überprüfe "Bananen" als ausgabe haben möchte. Sondern nur wenn mail enthalten ist.
    Also kann man das irgendwie verhindern oder umgehen?

    Auch Gott hatte ein Problem mit Ursache und Wirkung.

    Du darfst Bananen nur produzieren, wenn der Text keine Nullnummer ist.

    mfg Beat

    --
                     /|
      <°)))o><      / |    /|
                ---- _|___/ |     ><o(((°>
               OvVVvO    __ |         ><o(((°>
    <°)))o><  /v    v\/  |
     <°)))o>< ^    ^/_/_         ><o(((°>
               ^^^^/___/
    ><o(((°>    ----       ><o(((°>
       <°)))o><                      ><o(((°>o
    1. ok problem verstanden aber solte test() nicht nur ausgeführt werden wenn mail enthalten ist?

      1. Hi!

        ok problem verstanden aber solte test() nicht nur ausgeführt werden wenn mail enthalten ist?

        Nein, es wird aber _immer_ test() aufgerufen!

        An dieser Stelle :

          
        »»»» $text =str_replace("mail", test(),$text);  
        
        

        wird der Rückgabewert von test() verarbeitet - so er denn vorhanden ist.

        Wenn Du es anders haben möchtest stimmt die Logik in Deinem Script nicht!

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. Wenn Du es anders haben möchtest stimmt die Logik in Deinem Script nicht!

          genau die habe ich jetzt geändert. trotzdem vielen dank.
          mfg
           haltich

  2. Hi!

    Du rufst die Funktion test()  auf...

      
    
    > $text =str_replace("mail", test(),$text);  
    
    

    ...welche die folgende Anweisung beinhaltet:

      
    
    >  echo 'Bananen<br>';  
      
    
    

    PS: mit preg_replace passiert das selbe

    Klar!

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)