Hi, > Daniel Lorch wrote: >> shouldn't this be >> [^>]+ instead of [^]]+ > This yields the same result.
because nothing matches the whitespace character, and foo is also not matched. i would suggest following regular expression: --- snip ---------------------------------------- <pre> <?php preg_match_all("'([^ ]+) *= *\"?([^\" >]*)\"? *'im", '<php:foo var1="value1" var2="value2" />', $matches ); parray_tree($matches); ?> </pre> --- snip ---------------------------------------- which yields this result: --- snip ---------------------------------------- |-+ 0 (array) | |-> 0 = "var1="value1" " (string) | |-> 1 = "var2="value2" " (string) |-+ 1 (array) | |-> 0 = "var1" (string) | |-> 1 = "var2" (string) |-+ 2 (array) | |-> 0 = "value1" (string) | |-> 1 = "value2" (string) --- snip ---------------------------------------- this will also match non-regular syntaxes such as var1 = value1 var1 = "value1" but is still somewhat buggy, because this isn't matched: var1="value1 blub" maybe you find a better method. the "Back references" which are needed to accomplish this (as described in the manual) don't seem to work (bug?). any regular expression GOD around here? btw: you don't have to escape characters like >. also, try to use other regular expression-delimitors instead of /../ if you use the slash frequently in the expression. Kind Regards, Daniel Lorch -- if(empty($a) == true ? true : false) -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]