[reg_exp] Problem

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

  • [reg_exp] Problem

    Hallo

    Ich rätsle gerade nach einer Lösung die mich zu meinem Ziel führen soll. Einfache reg_exp sind für mich kein Problem, doch was ich gerade versuche wird mir ständing mit der Fehlermeldung "nothing to repeat at offset" quittiert.

    Also habe ich mein Script korrigiert, komme aber dadurch nicht zur Lösung.

    Ich habe eine funktion die folgend aussieht:
    PHP-Code:
    function read_dldat($pfad) {
        
    $datei file_get_contents($pfad);
        
    $daten = array();
        
    $daten['anzdl'] = 
    unbbcode(preg_replace("/\<anz\>(.*)\<\/anz\>/si","\\1",$datei));
        die(
    $daten['anzdl']);
        return 
    $daten;

    Hier wird eine Datei ausgelesen die wie folgt aussieht:

    Code:
    <anz>0</anz>
    <autor>Ingo Wittenberg</autor>
    <email>ingowittenberg@hotmail.com</email>
    <titel>E10 006 Gr&uml;</titel>
    <text>Die E10 006 im g&uuml;nen Style der DB. 
    Es handelt sich um ein Repint der E 10 von Uwe Sonnenberg. 
    Ben&ouml;tigt wird ein Cabview ( DB 141 ) von der Webseite [url]http://east-ir.de[/url] !
    </text>
    <root>e10_006.zip</root>
    Aus dieser Datei möchte ich die Elemente die in XML Style sind in ein Array laden, und das Array zurückgeben.

    So wie ich die Sache gerade habe, funktioniert sie, jedoch erstzt er mir den Inhalt und nicht den Rest. Ich will also nur den Inhalt zwischen den Tags. Der Rest ist unerwünscht. Soll also im Array Element nicht auftauchen.

    Der Reg_exp code für $daten['anzdl'] sollte also für diese Datei die "0" zurückgeben und sonst alles andere vergessen.

    Könnt ihr mir helfen?

  • #2
    Lass doch noch über jedes Array Element ein strip_tags() drüber.

    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
      Ein Problem ist das </anz> ... / ist dein Delimiter,
      muss also escaped werden: "/<anz>(.*)<\/anz>/si"
      oder durch was anderes ersetzt: "%<anz>(.*)</anz>%si"

      Allerdings würde ich für beliebige Tags erstmal so vorgehen:
      PHP-Code:
      preg_match_all('%<(.*)>(.*)</$1>%siU'$datei$matches);
      // Jetzt enthält $matches[1] die Tagnamen, $matches[2] den Inhalt.
      // assoziatives Array draus machen:
      if (strcmp(php_version(), '5')>=0)
        
      $array array_combine($matches[1], $matches[2]);
      else
        for (
      $i=0$i<count($matches[0]); $i++)
          
      $array[$matches[1][$i]] = $matches[2][$i]; 
      Nur mit verschachtelten Tags kann der Schnipsel nicht umgehen; da ist dann etwas mehr Hirnschmalz gefragt.

      Wenn Du expat eingebunden hast, geht das weitgehend ohne Nachdenken ab; schau dir mal den Kommentar von defsdoor vom 15. Juli an.
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Original geschrieben von Titus
        Nur mit verschachtelten Tags kann der Schnipsel nicht umgehen; da ist dann etwas mehr Hirnschmalz gefragt.
        gab's da nicht ein (?:R) zu oder so ?

        ...*such*
        hier
        http://www.php-resource.de/forum/sho...threadid=45908

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X