String replace auch bei nicht kompletter Übereinstimmung

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String replace auch bei nicht kompletter Übereinstimmung

    Hallo mal wieder,

    einen String parsen und bestimmte Worte darin ersetzen mittels str_replace ist ja schon ok :-)

    Nun ist folgendes problem:

    Ich möchte z.B wenn das Wort "meckertante" auftaucht und der parser nach dem Wort "mecker" sucht und durch "nörgel" ersetzen will, das komplette Wort "meckertante" umgesetzt haben, das das Ergebnis eben

    "nörgel" ist und nicht "nörgeltante"

    Also ... is vielleicht bissl konfus ausgedrückt aber halt nicht nur exakte übereinstimmungen sondern auch "ähnliche" Begriffe replaced haben.

    Hab mir hier schon einen abgesucht und war vorher ca halbe Stunde auf php.net unterwegs aber bin zu keiner Lösung gekommen.

    Daher hoff ich ihr schlauen Köpfe wisst evtl Rat.

    Danke schonmal.

  • #2
    preg_replace("/mecker(\w*)/i", "nörgel", ...)
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Okay...

      ich hab das mal getestet:

      PHP-Code:
      $splitted_text[$a] = preg_replace("/".$blacklist[$b]."(\w*)/i"$replace[$b]); 

      Keine Fehlermeldung, jedoch auch kein Replace.

      Es handelt sich übrigens um einen Durchlauf eines Arrays. $a steht (logischerweise) für das jeweilige Element.
      Zuletzt geändert von ^EckSteiN^; 06.01.2005, 20:22.

      Kommentar


      • #4
        hmm,

        versuch doch mal RTFM!

        preg_replace
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Wenn ich dabei nun wüsst was w* usw bedutet...

          Hier mal der code:

          PHP-Code:
          function wordparserl($text) {
              
          $splitted_text explode(" "$text);
              
          $number_wordstocheck count($splitted_text);

              
          $blacklist = array(
              
          "schlimmes_wort1",
              
          "schlimmes_wort2",
              
          "schlimmes_wort3",
              
          "schlimmes_wort4"
              
          );
              
          $number_blacklist count($lacklist);
              
              
          $replace = array(
              
          "***Liebes Wort1***",
              
          "***Liebes Wort2***",
              
          "***Liebes Wort3***",
              
          "***Liebes Wort4***"
              
          );
              
          $number_replace count($resplace);
              
              for (
          $a=0$a <= $number_wordstocheck$a++) {
                  for (
          $b=0$b <= $number_blacklist$b++) {
                      if (
          $splitted_text[$a] == $blacklist[$b]) {
                          
          $length strlen($splitted_text[$a]);
                          
          $suchmuster "/(\w*)/i";
                          
          $zeichenkette $blocklist[$b];
                          
          $ersetzung $replace[$b];
                          
          $splitted_text[$a] = preg_replace($suchmuster$ersetzung$zeichenkette);

                      }
                  }
              }
              
              
              return 
          $merged_text implode(" "$splitted_text);


          bsp:
          böses wort: "gans"
          gutes wort: "huhn"

          Aus "ganshut" soll dann nicht "huhnhut" sondern "huhn" werden...

          Kommentar


          • #6
            http://de3.php.net/manual/en/referen...ern.syntax.php

            suchen ist ************y

            Kommentar


            • #7
              Ich weiss, hab ich mittlerweil auch selber gefunden ....

              Die Funtion "replaced" trotzdem net so wie gewünscht ... und dem preg_replace nach (wie es angegeben wurde) gehts net ... und ich find nicht di Lösung, wie eben ein ganzes wort und nicht nur ein im wort vorkommender teilstring ersetzt wird

              Kommentar


              • #8
                Original geschrieben von ^EckSteiN^
                Ich weiss, hab ich mittlerweil auch selber gefunden ....

                Die Funtion "replaced" trotzdem net so wie gewünscht ... und dem preg_replace nach (wie es angegeben wurde) gehts net ... und ich find nicht di Lösung, wie eben ein ganzes wort und nicht nur ein im wort vorkommender teilstring ersetzt wird
                Reguläre Ausdrücke durchlesen Pattern-Syntax
                [color=blue]MfG Payne_of_Death[/color]

                [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                [color=red]Merke:[/color]
                [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                Murphy`s Importanst LAWS
                Jede Lösung bringt nur neue Probleme
                Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                Kommentar


                • #9
                  Ich find das immer wieder klasse, das man immer nur gesagt bekommt "such selber" anstelle mal konkrete hinweise zu liefern wie die erste Antwort hier.

                  Kommentar


                  • #10
                    in meiner vorstellung gilt
                    Code:
                    helfen != fuerdichmachen
                    ansonsten ist
                    ein ganzes wort und nicht nur ein im wort vorkommender teilstring
                    ja nichts anderes als eine zeichenkette, die von symbolen umgeben wird, die keine buchstaben sind, also zeichen und whitespaces.

                    Kommentar


                    • #11
                      Sicher ist helfen != fürmichmachen.

                      sagte auch "konkretere Hinweise" und net "ganzer Code".

                      Ich hab preg_`s nunmal noch nie verwendet, bin kein Guru in English und komm damit somit nicht wirklich so gut klar wie manch anderer hier. Is eben so.

                      Kommentar


                      • #12
                        Original geschrieben von ^EckSteiN^
                        Sicher ist helfen != fürmichmachen.

                        sagte auch "konkretere Hinweise" und net "ganzer Code".

                        Ich hab preg_`s nunmal noch nie verwendet, bin kein Guru in English und komm damit somit nicht wirklich so gut klar wie manch anderer hier. Is eben so.
                        Beitrag zitieren weil Forum verschluckt was ......
                        PHP-Code:
                        echo preg_replace('@Hasen\w*@is','Mädchen','Gollum frisst kleine Hasenbabies'); 
                        OffTopic:

                        eine Runde Mitleid.....

                        [color=blue]MfG Payne_of_Death[/color]

                        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                        [color=red]Merke:[/color]
                        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                        Murphy`s Importanst LAWS
                        Jede Lösung bringt nur neue Probleme
                        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                        Kommentar


                        • #13
                          Komisch ... mein Beispiel funktioniert bei mir ...

                          Beispielcode:
                          PHP-Code:
                          <?php
                          echo preg_replace("/mecker(\\w*)/i""nörgel""peng meckertante wurst");
                          ?>
                          ergibt:
                          peng nörgel wurst
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar


                          • #14
                            ja sicher,

                            das beispiel von dir (goth ^^) funktioniert auch wunderbar .... nur verlangt eben preg_replace drei und nicht nur, wie von ^EckSteiN^ angegeben, zwei parameter ...

                            normalerweise hätte es zumindest nen 'wrong parameter count' o.ä. ergeben sollen ...
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              Original geschrieben von goth
                              Komisch ... mein Beispiel funktioniert bei mir ...
                              klar geht deines auch hab auf einen aha Effekt gehofft eines gewissen Herren

                              OffTopic:

                              normalerweise sollte schon die eigene Logik sagen:
                              Was brauche ich?

                              Suchen nach was?
                              Ersetzen mit was?
                              Suchen wo denn?

                              Zuletzt geändert von Payne_of_Death; 06.01.2005, 23:55.
                              [color=blue]MfG Payne_of_Death[/color]

                              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                              [color=red]Merke:[/color]
                              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                              Murphy`s Importanst LAWS
                              Jede Lösung bringt nur neue Probleme
                              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                              Kommentar

                              Lädt...
                              X