Tobias Schlitt wrote: > Hi all! > > Kore and me just had an interessting discussion about the delimiter > characters to be used in PCRE statements. The most common way (at least > what I experienced) is to use slashes as delimiters, which results in > constructs like the following one: > > preg_match( '/foo.*bar/i', $subj, $matches ); > > In case I need to use a slash inside the regex itself, I need to escape > it, thought. Therefore, if I know I need multiple slashes inside the > regex, I tend to switch the delimiters to @ chars, to save me from > escaping slashes. Still, then I need to escape any @ inside the regex: > > preg_match( '@/foo/[EMAIL PROTECTED]@i', $subj, $matches ); > > Kore just told me, that he has switched to using normal braces as > delimiters, which I did not know to be working at all: > > preg_match( '(/foo/[EMAIL PROTECTED])i', $subj, $matches ); > > While this looks strange (at least to me) at the first glance, using > braces seems to have several advantages over all other characters: > > - You don't need to escape braces inside the regex, if you use braces as > a delimiter, resulting in no more silly escaping of the delimiter chars > at all. > - In $matches[0] the whole match is saved, while all higher indexes > contain deeper matching braces. Using braces as delimiters make this > behaviour more logical. > > While I'm almost convinced of using braces, I want to hear your opinions > here. Kore and me want to use that style of delimiting regex in Webdav > and I'm also thinking about migrating my other components regexes (if > there are any). Any comments?
I would use braces only when there is a need to create the array of matches. If we use braces everywhere the $matches array will look complicated. -- Alexandru Stanoi eZ Components System Developer eZ Systems | http://ez.no -- Components mailing list [email protected] http://lists.ez.no/mailman/listinfo/components
