Re:
Diese Befürchtung teile ich nicht. Wie ja zu sehen war, ist error-handling mit PHP erheblich aufwändiger, was den Gebrauch in einem Script und bei der Wartung derer das Verständnis anbelangt, als ein einfacher Test
a la
$pattern=(@preg_match_all('/\p{L}+/u', "維 foo", $arr)!==flase) ? '/\p{L}+/u' : '/\w+/u'; preg_match_all($pattern, $str, $arr);`In diesem Fall muss preg_match_all aber in jedem Fall zweimal ausgeführt werden, beim Auswerten der Fehlermeldung im Idealfall einmal, ansonsten zweimal.
Das ist zwar richtig, jedoch räkelt sich seit der Version 5.3 die Anbindung an die PCRE-lib eh im stack 'rum...
Da macht es dann eher Sinn, sich zu fragen wofür Reguläre Ausdrücke tatsächlich konzipiert sind. Sie bieten ähnlich SQL eine Anbindung an einen Dienst. Dabei muss das Programm für unterschiedliche "Anfragen" nicht geändert werden. Dieses fungiert also als wrapper. Das ist zwar konträr zum Verständnis der PHP-Devs und der Pflicht PCRE untrennbar in PHP einzukompilieren, jedoch sollte man sich klar machen, dass Reguläre Ausdrücke von sich aus Eierlegende Wollmilchsäue sind. Die Frage nach Redundanz stellt sich also bereits durch den Gebrauch an sich — nicht so sehr beim Wiederholungsfall.
Gruß aus Berlin!
eddi