Re: preg_replace_callback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 4, 2006 8:03 am, tJey wrote:
> Hi. I have problem with preg_replace_callback. It seems that my
> pattern
> is bad, but I can't find any error.
>
> Pattern : \[\s*((\d|\w|_)+)\s*\]
> this pattern is intended to find strings like "[field]",
> "[ fi12_eld]"...
>
> but every time I get warning message
> "Warning: preg_replace_callback(): Delimiter must not be alphanumeric
> or
> backslash in test.php on line 100"

The first and last character in preg_*('...') have to be delimiters
for the pattern, to distinguish it from flags at the end.

EG:
$pattern = '/\[\s*((\d|\w|_)+)\s*\]/';

You might, for example, want to tack on mUs or even i (though that
would be silly here for something like:
$pattern = '/\[\s*((\d|\w|_)+)\s*\]/sU';

Also note that \ is a 'special' character inside of ' for PHP, so SOME
PHP developers thinks this is "better style":

$pattern = '/\\[\\s*((\\d|\\w|_)+\\s*\\]/';

PHP "eats" the \\ to feed \ to PCRE which "eats" those up to get the
special characters it wants.

Also, I *think* maybe the \ in front of ] is not needed, as there is
no opening [ to "confuse" PCRE in the first place, since you escaped
that.

-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux