[PHP][Regex]

Pagina: 1
Acties:

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Goed, ik zit dus hier met het lekkere originele probleem dat ik een fout in een zelfgemaakte regex niet begrijp. Deze regex is bedoeld om verwijzingen naar html/php/asp bestanden in een html/php/asp pagina te vervangen door een andere URL. De volgende code is gebruikt :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    function encode_exit_urls($buffer){
        $OutURL = (
            "$SITEROOT/trackme.php?JAVA_PageURL=".
            rawurlencode($LoadPage).
            "&JAVA_Referrer=".
            rawurlencode($_SERVER["HTTP_REFERER"]).
            "&JAVA_DTime=".
            date("Y-m-d H:i:s").
            "LoadPage="
        );

        $Expression = ("[^\W\s](http://|\w)\w*\.(html*?|php3*?|asp)");
        return preg_replace(
            ($Expression),
            ($OutUrl. "$0"),
            $buffer
        );
    }

Ik heb hier al diverse dingen voor geprobeerd, inclusief bijvoorbeeld het escapen van de \-tekens (dus er \\ van maken). Dat hielp niet. Ik blijf de volgende waarschuwing krijgen :
code:
1
Warning: Unknown modifier '(' in /eenuurl/Stage04/tracker/trackme.php on line 45


Het zal ongetwijfeld iets heel simpels zijn, maar ik zit er natuurlijk weer overheen te kijken :+ 8)7

[ Voor 0% gewijzigd door NaliXL op 01-11-2002 15:36 . Reden: Ff wat wellicht gevoelig spul weggehaald... ]

Genoeg is meer dan veel, en tart den overvloed


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
NaliXL schreef op 01 november 2002 @ 15:25:
Het zal ongetwijfeld iets heel simpels zijn, maar ik zit er natuurlijk weer overheen te kijken :+ 8)7
Nogal ja. Je moet namelijk 'delimiters' om je regex zetten. Zie de eerste alinea van http://php.nederland.net/manual/en/ref.pcre.php.

Waarom zet je eigenlijk overal haakjes omheen? ($bla = ("bla"); e.d.) Het is nogal nutteloos...

Verwijderd

De fout zit hier in:
PHP:
1
        $Expression = ("[^\W\s](http://|\w)\w*\.(html*?|php3*?|asp)");


De eerste [ (het eerste teken dus) geeft aan dat de regex begonnen is en moet ook weer worden afgesloten met [. Het laatste teken is echter ), dus geeft dat een fout. De (een) juiste code is dit:
PHP:
1
        $Expression = ("#[^\W\s](http://|\w)\w*\.(html*?|php3*?|asp)#");


edit:
Oeps, iets te laat

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Bedankt voor de super-duidelijke uitleg _J_R_R!!!

Genoeg is meer dan veel, en tart den overvloed