phpbar.de logo

Mailinglisten-Archive

[php] RegExp Frage

[php] RegExp Frage

Christian Ruetgers chr at 1komma6.com
Mit Mar 24 18:00:12 CET 2004


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&amp;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=(.*)(&|&amp;)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