[gelöst]StringRegExp <-> preg_match

  • Hi,
    ich habe einen RegEx (PCRE) der in AutoIt wunderbar funktioniert aber in PHP eine Warung auslöst. Ich habe mir mal preg_match mal angeguckt und gesehn das der RegExe in / / müssen und das (?i) / /i ist.

    Aber warum kommt bei diesem RegEx

    Code
    /<a\shref=.[/,\d,\w]*?.\sstyle=.color\:\s#FFFFFF.>([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</a>|overflow\:hidden.>\n\s*([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</div>/


    folgende Warnung ?
    Warning: preg_match() [function.preg-match]: Unknown modifier ',' in ... on line 10

    Hier ist der PHP Quellcode

    Spoiler anzeigen
    PHP
    $Plattern = "/<a\shref=.[/,\d,\w]*?.\sstyle=.color\:\s#FFFFFF.>([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</a>|overflow\:hidden.>\n\s*([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</div>/";
    $str = file_get_contents("http://www.hardbase.fm");
    preg_match($Plattern,$str,$array);
    var_dump($array);
    ?>

    und hier der Funktionierende AutoIt Quellcode

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $sQuellcode = InetRead("http://www.hardbase.fm")
    $sQuellcode = BinaryToString($sQuellcode)
    $Ergebnis = StringRegExp($sQuellcode, "<a\shref=.[/,\d,\w]*?.\sstyle=.color\:\s#FFFFFF.>([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</a>|overflow\:hidden.>\n\s*([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)</div>",3)
    _ArrayDisplay($Ergebnis)

    [/autoit]

    Ich hoffe ihr bekommt meinen PHP Quellcode zum laufen ;) .

  • Den Pattern kann ich leider im Moment nicht testen aber du hast auf jeden Fall ein paar escapes vergessen.

    [/,\d,\w] → .[\/,\d,\w]
    </a> → <\/a>
    </div> → <\/div>

    Code
    "/<a\shref=.[\/,\d,\w]*?.\sstyle=.color\:\s#FFFFFF.>([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)<\/a>|overflow\:hidden.>\n\s*([\d,\w,\-,\(,\),\s,\.,\,,\&,']+)<\/div>/"

    Die Syntax sollte jetzt passen. Ob du damit was findest ist eine andere Frage :)

  • Wozu sind denn die ganzen Kommas in den eckigen Klammern? Soweit ich weiß gelten die als Zeichen und kommen höchstens einmal in einer Klammer vor. Und am Ende benutzt du ihn als Escapezeichen und Trenner, ich schätze daher kommt die Warnung
    Bin ich mir aber auch nicht so ganz sicher