Helge B.: regExp Hilfe

Ich brauche Hilfe bei einer Suche mit reguläremausdruck:

  
$test = '<?xml-stylesheet type="text/xsl" href="diesunddas" ?>';  
$suchmuster = "<\?xml-stylesheet.+?\>";  
echo preg_match($suchmuster, $test);

... gibt immer 0. Wie kann ich den String $test per regexp suchen?

Helge

  1. Hi,

    $test = '<?xml-stylesheet type="text/xsl" href="diesunddas" ?>';

    $suchmuster = "<?xml-stylesheet.+?>";
    echo preg_match($suchmuster, $test);

    
    > ... gibt immer 0.  
      
    Nicht nur das, es gibt auch eine Warnmeldung wegen des syntaktisch fehlerhaften regulären Ausdrucks.  
    Stelle bitte das error\_reporting auf E\_ALL und display\_errors auf 1.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Nicht nur das, es gibt auch eine Warnmeldung wegen des syntaktisch fehlerhaften regulären Ausdrucks.

      Wenn's richtig wäre, bräuchte ich ja hier nicht posten.

      1. Hi,

        und welche Fehlermeldung bekommst du dann?

        ~dave

      2. Nicht nur das, es gibt auch eine Warnmeldung wegen des syntaktisch fehlerhaften regulären Ausdrucks.
        Wenn's richtig wäre, bräuchte ich ja hier nicht posten.

        Wenn Dich niemand darauf hinweisen müßte, Dir Warn- und Fehlermeldung ausgeben zu lassen, bräuchtest Du hier vielleicht auch nicht posten.

        Anhand der Warnmeldung könntest Du vielleicht Schlüsse ziehen, die dich der Lösung näher bringen. Zumindest könntest Du uns die Warnmeldung mitteilen.

        1. Anhand der Warnmeldung könntest Du vielleicht Schlüsse ziehen, die dich der Lösung näher bringen. Zumindest könntest Du uns die Warnmeldung mitteilen.

          Habt ja recht:
          Warning: preg_match(): No ending matching delimiter '>' found in ...

          Mit ~~~php $suchmuster = "(<?xml-stylesheet.+?>)";
              echo preg_match($suchmuster, $test, $match);
              print_r($match);

          
          
          1. Mit
                $suchmuster = "(<?xml-stylesheet.+?)";
            sieht's schon gut aus. Allerdings will ich auch das letzte > noch haben.

          2. Warning: preg_match(): No ending matching delimiter '>' found in ...

            http://de.php.net/manual/de/function.preg-match.php
            Schau Dir mal die Beispiele innerhalb der Parameter-Liste an. Die Delimiter sind dort die beiden "/" am Anfang und am Ende.

            $suchmuster = "(\<\?xml\-stylesheet.+\?\>)";

            Was willst Du denn suchen?
            <?xml-stylesheet, gefolgt von etwas möglichst kutzem was kein Zeilenumbruch ist, gefolgt von ?>

            Was muß man maskieren?
            http://de.wikipedia.org/wiki/Regulärer_Ausdruck#Regul.C3.A4re_Ausdr.C3.BCcke_in_der_Praxis

            1. $suchmuster = "(.\?xml-stylesheet.+\?.)";
              Läuft, Danke

              1. $suchmuster = "(.\?xml-stylesheet.+\?.)";
                Läuft, Danke

                Was auch immer.

                Erinnert mich an das hier:
                Informatiker jagen Elefanten, indem sie den folgenden Algorithmus A ausführen:
                1. Gehe nach Afrika
                2. Beginne am Kap der guten Hoffnung
                3. Durchkreuze Afrika von Süden nach Norden bidirektional in Ost-West-Richtung
                4. Für jedes Durchkreuzen tue:
                4a) Fange jedes Tier, das Du siehst
                4b) Vergleiche jedes gefangene Tier mit einem als Elefant bekannten Tier
                4c) Halte an bei Übereinstimmung

                Wobei das Suchmuster der Falle in Punkt 4a des Informatikers entspricht und  nicht etwa Punkt 4b.

  2. Auf die gefahr hin, dass ich wie eine alte zerkratzte Schallplatet klinge:

    Wenn du offensichtlich ein XML verarbeiten willst, warum nimmst du dann keinen XML-Parser?