Ankündigung

Einklappen
Keine Ankündigung bisher.

EREG - PREG Problem

Einklappen

Neue Werbung 2019

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

  • EREG - PREG Problem

    Hallo, mal wieder ne Frage.

    Is ja nix Neues
    Ich hba ein Probelm mit EREG

    Ab einer der letzten PHP-Versionen wird das nciht mehr unterstützt.
    Ich weiß es soll mit PREG gehen, aber damit kenne ich mich absolut nicht aus.

    Hier mein Quelltext.
    PHP-Code:
    <?php

    error_reporting
    (E_ALL);

    $verz "//rsw-vm1/xmldata/";
    echo 
    $verz;
    $xmlverz opendir($verz); 

    $i 0
    while(
    $datei readdir($xmlverz))

      { 
      
      if(
    substr($datei,-4)=='.xml')
      { 
                
      if (!
    is_dir($datei))
        {                 
    //Verzeichnisse sollen ja nicht dargestellt werden 
        
    $daten[$i] = "$datei";
        
    $i++;
        
    $filename "$verz$datei";
        

    echo 
    $filename;

        if (
    file_exists($filename)) 
            {
            
            
    $data file_get_contents($filename); // Datei einlesen
            
    $data explode("<Software>" $data); // Inhalt in ein Array zerlegen

            
    for ($zaehler 1$zaehler count($data); $zaehler++) 
            {
             
    ereg("<DisplayName>(.*)</DisplayName>"  $data[$zaehler] , $link); // Link auslesen (wird in $link[1] gespeichert)
             
    ereg("<DisplayVersion>(.*)</DisplayVersion>" $data[$zaehler] , $name); // Name u. Beschreibung auslesen
             
             // Link Name und Beschreibung in HTML-Tags einbauen und ausgeben
             
    echo "<dl>\n";
             echo 
    " <dt> <a href=\"" trim($link[1]) . "\">$name[1]</a> </dt>\n";
             echo 
    "</dl>\n";

            }

            }

        
        
        }
            
        

      } 

      }

    ?>
    Ich bekomme immer den Fehler:
    Deprecated: Function ereg() is deprecated in C:\xampp\htdocs\inventur\software\index.php on line 41 bzw. 42

    wie baue ich das jetzt um?. Hab schon experimentiert, aber ich komm mit PREG mit klar. Vllt steh ich auch gerade nur aufm Schlauch oder denk mal wieder zu extrem kompliziert

    Danke schon mal....


  • #2
    Verwende nicht ereg() sondern preg_match()... verstehe nicht, wo dein Problem liegt
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      mein Problem leigt darin, dass ich ereg nciht einfach durch preg_match ersetzen kann.

      Irgendwie komm ich mit der Syntax nicht klar. wie gesagt, ich steh 100pro aufm Schlauch oder denk wieder um 12 Ecken zuviel

      Kommentar


      • #4
        Mach ein Tutorial zu regulären Ausdrücken, in dem preg_match verwendet wird. Dann geht die Lampe bestimmt bald an.
        http://hallophp.de

        Kommentar


        • #5
          Danke für die Antwort,

          aber ich komme nicht weiter.
          PHP-Code:
          preg_match('/[^<DisplayName>]+\.[^</DisplayName>]+$/'$data[$zaehler] , $link); 
          so hab ich es jetzt umgebaut, aber er meldet:
          Warning: preg_match() [function.preg-match]: Unknown modifier 'p' in C:\xampp\htdocs\inventur\software\index.php on line 41

          was ist mit dem 'p' gemeint. Mit lesen komme ich nicht weiter, ich check die Schreibweise von preg_match nicht? vorallem mit den ganzen sonderzeichen und Klammern. Einen Vorschlag zum Umbau zumindest, oder eine Erklärung, die ich auch verstehe wäre mir hilfreich...

          Danke

          Kommentar


          • #6
            ich möchte, dass der Teil zwischen <DisplayName> und </DisplayName> ausgeben wird und in eine Variable geschrieben wird. Der Text dazwischen ist unterschiedlich lang.

            Kommentar


            • #7
              Wenn du nach Zeichen suchen willst, die du gleichzeitig als Delimiter verwendest, musst du diese escapen. Es scheint so, als seist du mit deinem Tutorial noch nicht so weit fortgeschritten.
              http://hallophp.de

              Kommentar


              • #8
                nein, bin ich noch nicht.
                DAchte ich kann das schnell ändern, ohne mich komplett einzulesen. WEil dazu fehlt mir mom die Zeit.

                Kollege und Cheffe die nerven schon

                Kommentar


                • #9
                  Dann aber schnell weitergelesen.
                  http://hallophp.de

                  Kommentar


                  • #10
                    Du hast / als startenden Delimiter deines Patterns verwendet, also ist der nächste auftauchende / der beendende Delimiter, und danach dürfen nur noch Modifier kommen. D, i und s sind zufälligerweise gültige Modifier - aber das danach folgende p ist keiner mehr - und deshalb bekommst du diese Meldung.

                    Wenn du den Delimiter innerhalb des Patterns verwenden willst, musst du ihn entweder maskieren - oder du wählst ein anderes Delimiter-Zeichen, das im Suchausdruck selber gar nicht vorkommt (# ist bspw. recht gebräuchlich).

                    ich möchte, dass der Teil zwischen <DisplayName> und </DisplayName> ausgeben wird
                    Dann sind die eckigen Klammern aber erst mal unsinnig, denn die definieren eine Zeichenklasse.

                    Außerdem musst du das, was du letztendlich als „Treffer“ zurück geliefert bekommen willst, in runde Klammern einschließen, um ein capturing subpattern daraus zu machen.

                    DAchte ich kann das schnell ändern, ohne mich komplett einzulesen.
                    Tja, falsch gedacht.

                    WEil dazu fehlt mir mom die Zeit.

                    Kollege und Cheffe die nerven schon
                    Das ist aber nicht unser Problem.

                    Kommentar

                    Lädt...
                    X