|
|||||||||||||||||||||||||||
Uden at jeg kender så meget til PHP, vil jeg da gerne knytte et par
kommentarer...
Den første hat i ^[^&]$label=([^&]+)
-----------------^
betyder i PERL, fra starten af linien. Er det nødvendigt, hvis du er
ligeglad med starten af strengen?
Hvis vi skal beskrive det du søger efter i ord:
hvad-som-helst, efterfulgt af
$label=, efterfulgt af
et-eller-flere tegn som ikke må være & [slut]
Det ville jeg skrive på denne måde i PERL:
m/.*?$label=([^&]+)/i
m/ betyder søg.
.*? betyder nul-eller-flere-af-hvilket-som-helst-tegn, dog på den
kortest mulige måde.
/i betyder ignore-case.
Du kan nok også skrive:
/^[^&]*$label=([^&]+)/
moa. mangler der bare en 'quantifier' efter den første [^&], nemlig '*'.
Venlige Hilsner
Søren Magnusson
teknisk sslug@sslug
www.Energistyrelsen.dk
Telefon 3395 4390
> -----Oprindelig meddelelse-----
> Fra: Hans Schou [mailto:sslug@sslug
> Sendt: 21. juli 1999 20:42
> Til: sslug@sslug
> Emne: [sslug-perl] RegEx øv!
>
>
> I mangel af en PHP-liste vil jeg lade dette spørgsmål gå ud over
> perl-hajerne.
>
> Jeg skal parse en kommandolinie til webbrug. Jeg bruger syntaxen:
> URL?Identifier1=Value1&Identifier2=Value2&Identifier3=Value3
>
> Til at finde de forskellige værdier, har jeg følgende regulære
> udtryk hvor $label er identfier, som dog ikke virker:
> "^[^&]$label=([^&]+)"
> (ovenstående er inspireret af kaptajn Haddock, Tin Tin)
>
> Eksempler på inddata:
> URL?id=1234
> URL?stupid=nono&id=1234
> URL?id=1234&stupid=nono
> URL?stupid=nono&id=1234&stupid=nono
>
> Hvad mangler jeg i starten af min reg-ex?
>
> --- herunder hele min PHP-kode ---
> <html>
> <title>Argument Test</title>
> <h1>Argument Test</h1>
> <?php
>
> function argget( $label, $reg ) {
> global $argv;
> if (ereg("^[^&]$label=([^&]+)", $argv[0], &$data))
> list($foo, $reg) = $data;
> }
>
> if (count($argv)) {
> argget( "id", &$id );
> echo "id = $id\n";
> } else {
> echo "No arguments!\n";
> }
> ?>
> </html>
> --
> best regards
> +-------------------------------------------------------+
> ! Hans Schou, Hamletsgade 4-201, DK-2200 Kbh N !
> ! Fax : +45 3391 5310 Phone : +45 3586 1266 !
> ! mailto:sslug@sslug http://www.schou.dk !
> +-------------------------------------------------------+
> One Day - One World - One Operating System - Linux
> 12 September 1999 - http://www.linuxdemo.org
>
|
||||||||||||||
|
||||||||||||||