preg_replace Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_replace Problem

    Hallo, ich möchte bestimmte Wörter auf meiner Homepage ersetzten laßen.
    Funktioniert auch alles soweit.
    Als Beispiel soll das Wort Forum ersetzt werden.
    Ich war gestern auf einem Forum.
    Klappt wunderbar.
    Ich war gestern auf einem Forum/Forums.
    Klappt wunderbar es wird nichts ersetzt weil die zusammenhängen.
    Schreibe ich jedoch
    Forum da war ich gestern.
    wird das Wort Forum nicht ersetzt weil nichts davor steht.
    Wie muß ich da mein Suchmuster ändern?
    Hat da wer eine Lösung für mein Problem habe jetzt schon fast alles versucht.
    Meine Abfrage zum durchsuchen sieht im moment so aus.
    PHP-Code:
    $suchmuster[$id] = "/([\s])".htmlconverter($word1)."([\s.,:?!)])/i"

  • #2
    hi,

    so würde ich es machen:

    PHP-Code:
    $text preg_replace("=forum=i"'FORUM'$text); 
    hoffe ich habe jetzt keinen fehler gemacht..

    ( ne gerade getestet... funkt )

    gruß
    Smoky

    Kommentar


    • #3
      ist aber nicht das, was Piti braucht. lies seine frage noch mal durch.

      Piti, nimm \b (die wortgrenze) und benutze es um herauszufinden, ob das wort allein vorkommt.

      Kommentar


      • #4
        dann muss ich zugeben das ich seine Frage doch nicht richtig verstanden habe sorry

        Kommentar


        • #5
          \b ist unpassend, siehe zweites beispiel ... (obwohl die forderung dort inkonsequent ist) ... AFAIK wird / als grenze erkannt, somit findet eine ersetzung statt, => http://pcre.nophia.de/evaluate/06c72...dex.php#output

          assertions (zumindest du lookahead/behind) tuns auch nicht, imho.

          also: entweder das zweite beispiel auch ersetzen lassen, dann eben \b benutzen, oder alles drei mal durchlaufen, normal, für am anfang des textes, für am ende stehendes.

          oder nicht?
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            du hast natürlich recht, derHund.

            Kommentar


            • #7
              Original geschrieben von derHund
              \b ist unpassend, siehe zweites beispiel ... (obwohl die forderung dort inkonsequent ist) ... AFAIK wird / als grenze erkannt, somit findet eine ersetzung statt
              Soll das denn nicht passieren? (Hab ich die Fragestellung auch nicht verstanden?)

              Und wenn das gesuchte Wort ganz am Anfang oder am Ende des Strings steht, müsste das m.W. auch als word boundary gelten.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Und wenn das gesuchte Wort ganz am Anfang oder am Ende des Strings steht, müsste das m.W. auch als word boundary gelten.
                ja, meines wissens nach auch ... aber im zweiten beispiel fordert der autor ja, daß in -forum/forums- nicht ersetzt wird, obwohl es dort auch sein müßte (imho) und durch \b auch geschieht ...
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Habe es mal so versucht
                  PHP-Code:
                  $suchmuster[$id] = "/\b".htmlconverter($word1)."\s/i"
                  Dann wird auch das Wort direkt am Anfang eines Satzes ersetzt.
                  Also:
                  Forum war ich.
                  Da wird das Wort Forum ersetzt.
                  Mache ich es so:
                  PHP-Code:
                  $suchmuster[$id] = "/([\s])".htmlconverter($word1)."([\s.,:?!)])/i"
                  Dann wird am Anfang nichts ersetzt aber auch wo Komma etc. sind also richtig.
                  Das liegt sicherlich an dem /\b aber wie bekomme ich das /\b mit in meine ier zweite Abfrage bekomme da immer Errors raus.
                  Ist garnicht so einfach preg_replace *g*

                  Kommentar


                  • #10
                    es heißt \b, nicht /\b

                    verwende es außerdem doch hinten und vorne, sonst hast du am textende das selbe problem ...

                    Code:
                      $suchmuster[$id] = "#\b".htmlconverter($word1)."\b#i";
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Wenn ich
                      Code:
                       $suchmuster[$id] = "#\b".htmlconverter($word1)."\b#i";
                      mache bekomme ich Fehler
                      Code:
                      Fatal error: Allowed memory size of 26214400 bytes
                      exhausted (tried to allocate 8477511 bytes)
                      Ich muß doch das \b mit in meine Abfrage bekommen
                      Code:
                      $suchmuster[$id] = "/([\s])".htmlconverter($word1)."([\s.,:?!)])/i";
                      Weil mit meiner jetzigen klappt ja alles bis auf das erste Wort und letzte Wort wenn diese alleine stehen.
                      Also mit meiner geht alles zu 100% nur nicht wenn das Wort direkt am Anfang steht, das muß doch machbar sein.
                      Zuletzt geändert von Piti; 23.02.2006, 14:05.

                      Kommentar


                      • #12
                        Ich muß doch das \b mit in meine Abfrage bekommen
                        nö.

                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          Mhm das ist mist hier mal Bild wo man es sieht mit dem Wort Homepage.
                          Angehängte Dateien

                          Kommentar


                          • #14
                            nö = nö, du mußt das nicht zu deinem pattern hinzufügen, du kannst quasi alles weglassen.

                            http://pcre.nophia.de/evaluate/33210...dex.php#output
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              Naja, ich bekomme den Fehler
                              Code:
                              Fatal error: Allowed memory size of 26214400 bytes
                              exhausted (tried to allocate 8477587 bytes)
                              wenn ich
                              Code:
                              $suchmuster[$id] = "#\b".htmlconverter($word1)."\b#is";
                              versuche

                              Kommentar

                              Lädt...
                              X