sqlite_escape_string

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_escape_string — Escapes a string for use as a query parameter

Description

stringsqlite_escape_string
( string$item
)

sqlite_escape_string() will correctly quote the string
specified by item
for use in an SQLite SQL statement. This includes doubling up
single-quote characters (') and checking for
binary-unsafe characters in the query string.

Although the encoding makes it safe to insert the data, it will render
simple text comparisons and LIKE clauses in your
queries unusable for the columns that contain the binary data. In
practice, this shouldn't be a problem, as your schema should be such that
you don't use such things on binary columns (in fact, it might be better to
store binary data using other means, such as in files).

I'm not sure if the condition is equivalent to yours, but this excludes any numeric key, any completely uppercase'd keys and some selected (argc and argv) special keys. In case of never passing $GLOBALS or $_SERVER as argument one might shorten everything to this as a "pipelined" version:

<?php

function sqlite_escape_array( $arr ) {

foreach ( $arr as $key => $val )

if ( is_string( $val ) )$arr[$key] = sqlite_escape_string( $val );

else if ( is_array( $val ) )$arr[$key] = sqlite_escape_array( $val );

return $arr;

}

?>

PHP's syntax is more powerful than those of many other languages, even when it's supporting their one's as well.