Mark: str_replace

hallo !

problem:

$string = "Dies ist ein Test String";
$neu = str_replace("Test","test", $string);

soweit so gut - funktioniert aber eben nur, wenn $string Test enthält, nicht bei TEST,teSt,tesT etc. ich möchte aber, das Test IMMER in test umgewandelt wird, egal ob goss, klein oder durcheinander geschrieben.

strtolower nützt mir nichts, weil er dann den ganzen string klein macht, es soll aber nur auf test angewendet werden.

Wie kann ich das hinbekommen ?

Gruß
Mark

  1. hi,

    $string = "Dies ist ein Test String";
    $neu = str_replace("Test","test", $string);

    soweit so gut - funktioniert aber eben nur, wenn $string Test enthält, nicht bei TEST,teSt,tesT etc. ich möchte aber, das Test IMMER in test umgewandelt wird, egal ob goss, klein oder durcheinander geschrieben.

    strtolower nützt mir nichts, weil er dann den ganzen string klein macht, es soll aber nur auf test angewendet werden.

    dann solltest du es mit preg_replace und regulären ausdrücken versuchen.

    gruss,
    wahsaga

    1. "<Center>Hallo</Center>" oder "<cenTer>Hallo</cenTer>"
      soll umgewandelt werden in :
      "<center>Hallo</center>";

      $string = "<Center>Hallo</Center>";
      $suchwort = "<CENTER>";
      $ersatzwort = "<center>";

      $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);

      das funktioniert nicht.

      warum nicht ?

      1. hi!

        "<Center>Hallo</Center>" oder "<cenTer>Hallo</cenTer>"
        soll umgewandelt werden in :
        "<center>Hallo</center>";

        alles klar!

        $string = "<Center>Hallo</Center>";
        $suchwort = "<CENTER>";
        $ersatzwort = "<center>";

        der ansatz ist ja schonmal gut

        $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);

        und bis hierher wird auch zumindest das erste <Center> richtig ersetzt.
        nur das 2. natürlich nicht...
        weil suchwort ist <CENTER> und da wird er </Center> nicht finden.
        also das ersetzten entwerder 2 mal machen, oder die klammern weglassen.

        greetz, hoagie

        1. hi!

          "<Center>Hallo</Center>" oder "<cenTer>Hallo</cenTer>"
          soll umgewandelt werden in :
          "<center>Hallo</center>";
          alles klar!

          $string = "<Center>Hallo</Center>";
          $suchwort = "<CENTER>";
          $ersatzwort = "<center>";

          der ansatz ist ja schonmal gut

          $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);
          und bis hierher wird auch zumindest das erste <Center> richtig ersetzt.

          -- Leider nicht

          du hast natürlich schon recht, das er das zweite center nicht ändern kann, aber beim ersten gibts schon ne fehlermeldung

          ich kürze das beispiel mal ab - verständnishalber:

          "<Center>Hallo" oder "<cenTer>Hallo"
          soll umgewandelt werden in :
          "<center>Hallo</center>";

          $string = "<Center>Hallo";
          $suchwort = "<CENTER>";
          $ersatzwort = "<center>";
          $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);

          funktioniert nicht..

          1. Alkso jetzt nochmal vor vorne:

            "<Center>Hallo" oder "<cenTer>Hallo"
            soll umgewandelt werden in :
            "<center>Hallo";

            $string = "<Center>Hallo";
            $suchwort = "<CENTER>";
            $ersatzwort = "<center>";
            $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);

            fehlermeldung: Unknown modifier '<' in /...........

            1. seltsam:
              hier mein (eigentlich dein) script:
              <?
              $string = "<Center>Hallo</Center>";
              $suchwort = "CeNtER";
              $ersatzwort = "center";

              $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);
              echo $neu;
              ?>
              und folgender output:

              <center>Hallo</center>

              1. seltsam:
                hier mein (eigentlich dein) script:
                <?
                $string = "<Center>Hallo</Center>";
                $suchwort = "CeNtER";
                $ersatzwort = "center";

                $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);
                echo $neu;
                ?>
                und folgender output:

                <center>Hallo</center>

                ja, es muss damit zusammenhängen, das ich bei mir im such- und ersatzwort das < und > Zeichen mit drin habe. das mag er anscheinend nicht, aber ich weiss nicht, wie ich das lösen soll.

                1. ja, es muss damit zusammenhängen, das ich bei mir im such- und ersatzwort das < und > Zeichen mit drin habe.

                  geht es ohne die tags?
                  auch wenn ich die klammern reintu hauts immer noch hin....

                  1. ja, es muss damit zusammenhängen, das ich bei mir im such- und ersatzwort das < und > Zeichen mit drin habe.
                    geht es ohne die tags?
                    auch wenn ich die klammern reintu hauts immer noch hin....

                    kapier ich jetzt nicht, bei mir gibts ne fehlermeldung

                    1. strange, schau mal in dein error log file?
                      steht da was besonderes drinnen?

                      1. strange, schau mal in dein error log file?
                        steht da was besonderes drinnen?

                        ne, nix

                        kann ich dir mein vollständiges script mal per mail zusenden und du guckst mal, ob es bei dir läuft ?

                        1. kann ich dir mein vollständiges script mal per mail zusenden und du guckst mal, ob es bei dir läuft ?

                          sure, mach nur :)

                          1. kann ich dir mein vollständiges script mal per mail zusenden und du guckst mal, ob es bei dir läuft ?
                            sure, mach nur :)

                            klasse, aber nicht wundern

                            die 2. array spalte hätte ich mir schenken können, wenn ich ein strtolower auf die erste arrayspalte gemacht hätte :-)

                            ich muddel das teil noch um , wenn alles funzt..

            2. Hallo Mark,

              $neu = preg_replace("/".$suchwort."/i",$ersatzwort,$string);
              fehlermeldung: Unknown modifier '<' in /...........

              in welcher Zeile?

              in der Doku (->http://de.php.net/preg_replace) wird jeweils ein Parameter in einer Variablen zusammengebaut und diese dann in die Funktion eingesetzt. Ich habe es mal etwas umgebaut, so funktioniert es:

              $tag = 'center';
               $string = '<Center bla="nix">Hallo</CenTer>';
               $suchwort = '=<(/?)'.$tag.'(.*?)>=i';
               $ersatzwort = "<$1".$tag."$2>";
               $neu = preg_replace($suchwort,$ersatzwort,$string);

              Durch das (/?) und das $1 wird ein / wieder eingesetzt, wenn einer vorhanden war. Das (.*?) (mit dem $2) sorgt dafür, dass eventuell vorhandene Attribute mit übernommen werden. In $tag kannst du das Element in der gewünschten Schreibweise eingeben.

              Grüße aus Nürnberg
              Tobias

              --
              Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|