Regex funktioniert nicht *grmpf*

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

  • Regex funktioniert nicht *grmpf*

    Hallo Leute,

    ich weiß dass das mindestens schon der 1.000.000 Thread um einen Regex ist. Ich hab schon alle Anleitungen die ich auf irgendwelchen seiten gefunden habe durchgelesen, ABER ICH BIN EINFACH ZU DUMM einen einfachen Regex hinzubekommen...

    Ich will aus einem RSS feed Auszug:
    Code:
    	<channel>
    <title>tagesschau.de - Die Nachrichten der ARD</title>  
    <link>[url]http://www.tagesschau.de[/url]</link>
    <description>tagesschau.de</description>
    <language>de</language>
    <copyright>tagesschau.de, Norddeutscher Rundfunk</copyright>
    <docs>[url]http://blogs.law.harvard.edu/tech/rss[/url]</docs>
    <ttl>30</ttl>
    <item>
    <title>Villepin bestätigt Abbau von 10.000 Stellen bei Airbus</title>
    <link>[url]http://www.tagesschau.de/aktuell/meldungen/0,,OID6432660_REF1,00.html[/url]</link>  
    <description>Der französische Premierminister de Villepin hat den beabsichtigten
    Abbau von 10.000 Arbeitsplätzen bei Airbus bestätigt. Er forderte eine faire Belastung der
    Länder bei den Stellenstreichungen. Am Freitag sprechen Kanzlerin Merkel und
    Frankreichs Staatspräsident Chirac auf höchster Ebene über das Problem.</description>
    <guid>[url]http://www.tagesschau.de/aktuell/meldungen/0,,OID6432660_REF1,00.html[/url]</guid>
    <category>Wirtschaft</category>
    </item>
    ....
    mit preg_match_all()
    alle Item-Titel holen, leider funktioniert mein Regex irgendwie nicht:
    PHP-Code:
    $Regex "!<item>.*<title>([^<>]+)</title>!s"
    Ich frage dann den Treffer[1] ab, allerdings ist dort nur ein Wert hinterlegt der dem allerletzten Item-Titel entspricht...

    Was bitte mach ich da verkehrt???

    THX für jede Hilfe ...
    Zuletzt geändert von punisher; 20.02.2007, 11:39.
    ___________________________
    Good fight ... good night!

  • #2
    PHP-Code:
    preg_match('/<item><title>([^<]*)/',$deinString,$treffer); 
    schon so probiert. Ansonsten musst du bei deiner Version sicherlich \/ machen weil / sonst als Begrenzer engesehen wird.

    Gruss

    tobi
    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


    • #3
      Ne, dein RegEx matcht zuviel, oder?

      Das hängt damit zusammen, dass das * versucht soviel wie möglich zu bekommen. Häng mal ein ? hinter das Sternchen, also *?
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Original geschrieben von Shurakai
        Ne, dein RegEx matcht zuviel, oder?

        Das hängt damit zusammen, dass das * versucht soviel wie möglich zu bekommen. Häng mal ein ? hinter das Sternchen, also *?
        Shurakai du bist ein ASS!!!

        Jetzt funktioniert´s einwandfrei! Ich hoffe dass ich die regulären Ausdrücke irgendwann noch mal abschnall ...

        MERCI DIR und auch den anderen für Ihre Antworten!!!

        Grüße
        Punisher
        ___________________________
        Good fight ... good night!

        Kommentar

        Lädt...
        X