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