Wie kann ich in pattern ein zeichen ignorieren?

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

  • Wie kann ich in pattern ein zeichen ignorieren?

    Ich hoffe mal ich kann das einigermaßen verständlich rüberbringen.

    Also ich will bestimmte abschnitte aus einen Link pattern.

    Folgende Variante funktioniert gut, aber leider bekomme ich auch links dich ich nicht haben will...
    PHP-Code:
    $links_pattern "#><a href='index.php(.+)' target=#";
    preg_match_all($links_pattern$TXT$array_links); 
    Dies Variante ist genau die die ich brauche, nur funktioniert sie durch den * absolut nicht mehr. Was müsste ich schreiben das der * ignoriert wir??
    PHP-Code:
    $links_pattern "#<td class=content width=*><a href='index.php(.+)' target=#";
    preg_match_all($links_pattern$TXT$array_links); 

  • #2
    Re: Wie kann ich in pattern ein zeichen ignorieren?

    Original geschrieben von Nordin
    Dies Variante ist genau die die ich brauche, nur funktioniert sie durch den * absolut nicht mehr. Was müsste ich schreiben das der * ignoriert wir??
    Willst du nach dem Zeichen * suchen?

    Ist dir klar, dass der * in Regulären Ausdrücken ein Sonderzeichen darstellt?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      hauptsache du hast selbst verstanden, was du geschrieben hast.

      wie wäre es auch mit ein paar beispielen: links, die man matchen sollte, und welche, die nicht zu erfassen sind.

      Kommentar


      • #4
        Also... hier suche ich nach alles was zwischen "><a href='index.php" und "' target=" steht.
        PHP-Code:
        $links_pattern "#><a href='index.php(.+)' target=#";
        preg_match_all($links_pattern$TXT$array_links); 
        Da bekomme ich folgendes zurück:
        Code:
        path=1,2,22&max=1&PHPSESSID=b2043173854c38c38fea94e11893f5118
        path=1,2,22&exc_obj=25034&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25033&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25027&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25017&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25005&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24970&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24850&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24846&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24766&PHPSESSID=b2043173854c38c38fea94e11893f511
        hier suche ich nach alles was zwischen "<td class=content width=*><a href='index.php" und "' target=" steht.. Bloß hier ist der * das Problem... weil der Stern leider im Code steht bekomme ich nichts zurück!
        PHP-Code:
        $links_pattern "#<td class=content width=*><a href='index.php(.+)' target=#";
        preg_match_all($links_pattern$TXT$array_links); 
        Jetzt wollt ich wissen ob ich irgendwie im pattern-string mit reinschreiben kann -ignoriere an dieser stelle den stern- damit ich folgendes bekomme.
        Code:
        path=1,2,22&exc_obj=25034&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25033&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25027&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25017&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=25005&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24970&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24850&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24846&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24766&PHPSESSID=b2043173854c38c38fea94e11893f511
        path=1,2,22&exc_obj=24767&PHPSESSID=b2043173854c38c38fea94e11893f511
        Wie man sieht ist die erste zeile dann anderst und ich hab dann die zehn links die ich brauche.
        Zuletzt geändert von Nordin; 30.03.2006, 14:57.

        Kommentar


        • #5
          hauptsache du hast selbst verstanden, was du geschrieben hast.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Wenn du den * als * und nicht als Modifikator suchen willst, dann solltest du diesen in deinem RegExp entwerten \*

            Gruss

            tobi

            p.s. aber eine bessere Beschreibung würde das Problem vllt verständlicher machen
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              * != .*

              ich versuche mich mal im Raten und denke mit width=*> meinst du dass alles zwischen width= und > stehen darf. Da der * in regulären ausdrücken aber beliebige Wiederholung heißt wolltest du wohl .* (beliebige Wiederholung (*) eines beliebigen Zeichens (.)) statt * schreiben. Richtig geraten?
              Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

              Kommentar


              • #8
                nee falsch geraten *g*

                Im Quelltext sieht es so aus:
                Code:
                <td class=content width=*><a href='index.php?path=1,2,22&exc_obj=25033&PHPSESSID=36597a0431367492f648c7e20a64a5cf'
                target='cmsframe' class='contextlink'>Projektstellenmarkt: aktuell 6 weitere Stellen ausgeschrieben</a></td>
                der * steht mit im quelltext...

                Wenn ich jetzt den Teil zwischen
                Code:
                <td class=content width=*><a href='index.php
                und
                Code:
                ' target='cmsframe' class='contextlink'>Projektstellenmarkt: aktuell 6 weitere Stellen ausgeschrieben</a></td>
                so:
                PHP-Code:
                $links_pattern "#<td class=content width=*><a href='index.php(.+)' target=#";
                preg_match_all($links_pattern$TXT$array_links); 
                pattern will funktioniert es nicht wegen den "Stern" im Quelltext...

                Wenn ich es so mache
                PHP-Code:
                $links_pattern "#><a href='index.php(.+)' target=#";
                preg_match_all($links_pattern$TXT$array_links); 
                funktioniert es... Warum? Weil ich den Stern nicht mit drin hab in der Abfrage... Aber so ist mist weil ich so mehr und verkehrte links bekomme die ich garnicht brauch.

                [COLOR=red]//EDIT[/COLOR]
                Und was ich mich immernoch FRage warum hier kein Umbruch im Fenster kommt wenn ich CODE poste?
                Zuletzt geändert von Nordin; 30.03.2006, 17:27.

                Kommentar


                • #9
                  1.: Der Umbruch kommt nur im code-Bereich nicht
                  2.: wenn du wirklich nach dem * suchst musst du wie jahlives geschrieben hat \* nutzen
                  Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

                  Kommentar


                  • #10
                    Hast du meinen Vorschlag den Stern zu escapen mal versucht umzusetzen ? Der Stern ist bei RegExp ein Modifikator und wenn du ihn als Zeichen willst dann musst du ihn escapen z.B. wie Anführungszeichen innerhalb von Strings
                    Code:
                    $str = 'Ich bin ein String und sage:\\'Hallo\\'';
                    Gruss

                    tobi

                    p.s. ist natürlich php Code nur in der Code Tags werden die \ immer gefressen
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Und was ich mich immernoch FRage warum hier kein Umbruch im Fenster kommt wenn ich CODE poste?
                      während du nach einer antwort suchst, bemühe dich bitte darum, umbrüche manuell einzubauen.

                      brauchst du vielleicht http://de3.php.net/manual/en/function.preg-quote.php ?

                      Kommentar


                      • #12
                        @penizillin

                        Ahh sehr gut beide Fragen glaub beantwortet!

                        Muss ich doch glatt probieren... Thx

                        Kommentar


                        • #13
                          Original geschrieben von Nordin
                          beide Fragen glaub beantwortet!
                          OffTopic:
                          Und das - wenn auch indirekt - sogar schon seit der ersten Antwort ...
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar

                          Lädt...
                          X