Anirudh Zala wrote:
I am facing a strange behavior of PHP's ereg_replace() function. Here is
scenario:
Problem:
Removing "__" (2 continuous underscores) and Capitalizing character that
immediately follows "__" from a string. In our example our string
is 'ss__name' and expected output should be 'ssName'.
Solution:
Tried following code using function "ereg_replace()" but character is not
getting capitalized:
echo ereg_replace('__([:alnum:]{1})',strtoupper('\1'),'ss__name');
Outputs:
"ssname" instead of "ssName"
The strtoupper is being executed before ereg_replace, and doesn't have
any effect on the string '\1' because it doesn't contain any alphabet
characters.
You need to use the /e modifier for preg_replace()
echo preg_replace('/__([a-z0-9])/ie','strtoupper(\'$1\')','ss__name');
Contrary to above explanation, following code works properly (I just used
different function instead of "strtoupper"):
echo ereg_replace('__([:alnum:]{1})',str_repeat('\1',5),'ss__name');
Outputs:
"ssnnnnname" as expected.
This is executed as:
echo ereg_replace('__([:alnum:]{1})','\1\1\1\1\1','ss__name');
Dan
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com
Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php