> 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

Reply via email to