> Im trying to do something like sprintf() because I would like to have > control over placeholders. The code I've posted works for the most part, > but when I introduce content that has the same characters as my > placeholders (%s and %i), it breaks to hell... Anyone got any ideas on > how to fix, or tell me Im barking up the wrong tree...
After the first call to substr_replace, you swap in some replacement text that contains an '%s'. Subsequent calls to substr_replace use your replacement text as the key, because it's no longer possible to uniquely determine what was part of the original string, and what was swapped in. Recommendation: don't use preg_match. You can try using preg_replace with arrays as arguments, but you may come closer to sprintf's correct behavior if you instead consume the pattern string ($sql) character by character, generating an output string made up of characters from the pattern string, and elements array_shifted off of $data as you encounter placeholders. Don't forget to add a placeholder that allows you to use '%' in that string -- sprintf uses '%%'. Much easier recommendation: use provided sprintf, but parse out any unwanted placeholders first, using preg_replace. --------------------------------------------------------------------- michal migurski- contact info and pgp key: sf/ca http://mike.teczno.com/contact.html -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php