Mailinglisten-Archive |
Hi, On Wednesday 24 March 2004 18:00, Christian Ruetgers wrote: > Ich möchte die Strings zerlegen nach den Werten nach 'show_nav=' und > 'lang='. Wenn der 'lang' Parameter nicht enthalten ist, matcht meine > Expression nicht. > $instring2 = '/index.php4?show_nav=test-3-fr&lang=fr'; > $instring3 = '/index.php4?show_nav=test-3-fr'; > expression: '/\/index.php4\?show_nav=(.*)(&|&)lang=(.*)/s' > > Ich dachte mit einem: > expression: '/\/index.php4\?show_nav=(.*)(((&|&)lang=(.*))?)/s' müsste > ich hinkommen, ist aber nicht so. Kann mir da bitte mal jemand den > entscheidenden Tipp geben? das "lang=" muss in Deinem Ausdruck jedenfalls zutreffen, damit er matcht. Jener Teil ist aber nicht zwangsläufig vorhanden.... Dies sollte z.B. durch ersetzen mit "(lang=)?" umgehbar sein, also komplett '/\/index.php4\?show_nav=(.*)(&|&)(lang=)?(.*)/s' - ungetested. Desweiten, heute im Sodnerangebot: meine parse_query-Funktion, die mag aber nur & und kein &als Trennzeichen. <?php function parse_query($query) { $retval=array(); $parsed_url = parse_url($query); foreach (explode('&', $parsed_url['query']) AS $valuepair) { $valuepair = explode('=', $valuepair); $retval[$valuepair[0]] = urldecode($valuepair[1]); } return $retval; } $in = '/index.php4?show_nav=test-3-fr&lang=fr'; print_r(parse_query($in)); ?> Array ( [show_nav] => test-3-fr [lang] => fr ) johannes
php::bar PHP Wiki - Listenarchive