Mailinglisten-Archive |
Hi all,
Ich bin mir nicht sicher, ob RegExp's hier hingehören, finde aber immer
wieder Fragen dazu. Also frage ich auch mal:
Ich habe ein paar mögliche Strings und möchte diese in Teilstrings zerlegen.
Ich verwende dazu (natürlich) preg_match_all(). Das Zerlegen funktioniert
wunderbar, solange alle gesuchten Elemente enhalten sind. Wenn diese nicht
enthalten sind, gar kein Treffer.
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?
Danke!
Scriptbeispiel:
--------------------------------snip--------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>pregtest</title>
</head>
<body>
<pre>
<?php
$instring1 = '/index.php4?show_nav=test-3-fr&lang=fr';
$instring2 = '/index.php4?show_nav=test-3-fr&lang=fr';
$instring3 = '/index.php4?show_nav=test-3-fr';
$pattern = '/\/index.php4\?show_nav=(.*)(&|&)lang=(.*)/s';
preg_match_all($pattern, $instring1, $instring1_parts);
echo('instring1:');
print_r($instring1_parts);
echo('<hr>');
preg_match_all($pattern, $instring2, $instring2_parts);
echo('instring2:');
print_r($instring2_parts);
echo('<hr>');
preg_match_all($pattern, $instring3, $instring3_parts);
echo('instring3:');
print_r($instring3_parts);
echo('<hr>');
?>
</pre>
</body>
</html>
--------------------------------snip--------------------------
--
Christian Ruetgers - Geschäftsführung Projekte / Technik
1komma6 - Multimediale Dienstleistungen GmbH
Fon: (0251) 57 29-7
Fax: (0251) 57 29-6
eMail: ch.ruetgers at 1komma6.com
Mobil: 0173/860 28 93
visit http://www.1komma6.com
php::bar PHP Wiki - Listenarchive