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