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...
Thanks
--------
<?php

$sql = 'select * from t1 where a like %s, b like %s and c like %s';
$data = array('%see me over there%', '%see you later%', 'just see');

preg_match_all('/%[si]/', $sql, $matches);

$matches = $matches[0];

var_dump($sql); echo '<p>'; var_dump($data); echo '<p>';

foreach($data as $key => $chunk)
{
    switch( $matches[ $key ] )
    {
        case '%i':
            $chunk = (int)$chunk;
            break;

        case '%s':
            $chunk = "'" . (string)$chunk . "'";
            break;

        default:
            continue;
    }

    $pos = strpos($sql, $matches[$key][0], $matches[$key][1]);

    $sql = substr_replace($sql, $chunk, strpos($sql, $matches[$key]), 2);
}

echo '<p>';
var_dump($sql);

?>

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

Reply via email to