Ben iç içe nesne / dizi combo slashes eklemek veya kaldırmak için kullanıyorum iki işlevi vardır. Dizinin ilk "seviye" her zaman bir nesne, ama onun bazı özelliklerini diziler veya nesneler olabilir.
İşte benim iki işlevleri şunlardır:
function objSlash( &$obj, $add=true )
{
foreach ( $obj as $key=>$field )
{
if ( is_object( $field ) )
objSlash( $field, $add );
else if ( is_array( $field ) )
arrSlash( $field, $add );
else if ( $add )
$obj->$key = addslashes( $field );
else
$obj->$key = stripslashes( $field );
}
return;
}
function arrSlash( &$arr, $add=true )
{
foreach ( $arr as $key=>$field )
{
if ( is_object( $field ) )
objSlash( $field, $add );
else if ( is_array( $field ) )
arrSlash( $field, $add );
else if ( $add )
$arr[$key] = addslashes( $field );
else
$arr[$key] = stripslashes( $field );
}
return;
}
Şöyle çağrıldığını:
objSlash( $obj, false );
Ancak, işlevi iç içe diziden eğik şerit yok. Işlev geçirilen nesne gibi budur:
stdClass Object
(
[id] => 3
[lines] => Array
(
[0] => Array
(
[character] => Name
[dialogue] => Something including \"quotes\"
)
)
)
Neyi yanlış yaptım? Somewhere hattı boyunca bir referans eksik gidiyor ...