Hi Robin Many thanks for this, how would one extend this to support the following: $str = "insert into userComment (userID, userName, userSurname) values (0, 'Leon', 'mcDonald')"; one does not want $str = "insert into user_comment (user_id, user_name, user_surname) values (0, 'Leon', 'mc_donald')"; unfortunately lookbehind assertions does not support non-fixed length chars so /(?<=(?<!')[a-z])([A-Z]+)/e will work for 'mDonald' but the following will not work. /(?<=(?<!')([a-z]+))([A-Z]+)/e Any ideas? Many thanks -- Leon > <?php > $str = "insert into userComment (userID, userName, userSurname) values > (0, 'Leon', 'Vismer')"; > > $match = '/(?<=[a-z])([A-Z]+)/e'; > $replace = 'strtolower("_$1")'; > print preg_replace($match, $replace, $str); > ?> > > insert into user_comment (user_id, user_name, user_surname) values (0, > 'Leon', 'Vismer') > > -robin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php