Ringeril 0 Denunciar post Postado Fevereiro 18, 2011 Olá pessoal, Estou com uma dúvida cabulosa aqui! <_< O que está acontecendo é que quero escapar uma array, mas nem sempre sei o tamanho e a complexidade da mesma. Exemplo: anti( array( '1', '2', '3', '4', array( '6', array( '8', '9', '10', '11', '12' ), '13', '14', array( '16', '17', '18', '19', '20' ) ) ) ); Supondo que eu tenha essa array, como chego ao valor 20 para escapa-ló também. Função: function anti($texto){ if(is_array($texto)){ foreach($texto as $c => $v){ if(is_array($v)){ // array dentro de array...e assim sucessivamente // teria de ser um loop ou algo do tipo }else{ $texto2[$c] = mysql_real_escape_string($v); } } return $texto2; }else{ return mysql_real_escape_string($texto); } } Abraço e obrigado por ler até aqui. :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 18, 2011 é só usar recursão Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Fevereiro 18, 2011 Beleza, pesquisei sobre Recursão e fiz isso aqui: function anti($var){ global $texto; if(is_array($var)){ foreach ($var as $c => $v){ if (is_array($v)){ anti($v); }else{ $texto[$c] = $v; } } }else{ return mysql_real_escape_string($var); } return $texto; } Agora se eu manter a linha "global $texto;" o retorno é so uma array com os ultimos valores (à array mais profunda). Se eu tirar essa linha "global $texto;" o retorno é somente a primeira array (somente os valores, sem a inclusão das arrays mais profundas). E agora como faço? :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 18, 2011 <?php $a = array( 1 => 'a', 2 => 'b', 3 => 'c', 4 => array( 41 => '4a', 42 => '4b', 43 => '4c', ), ); print_r( $a ); echo '<hr>'; // print original $b = array_filter( $a, 'is_string' ); // the magic.. print_r( $b ) . '<hr>'; // print result ?> // o mesmo exemplo acima, porém, usando um objeto no callback class foo { function bar( $str ) { return is_string( $str ); } } $b = array_filter( $a, array( new foo, 'bar' ) ); http://php.net/array_filter Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Fevereiro 18, 2011 Acabei pesquisando mais e fiz desta maneira, está funcionando como quero: function anti($var) { if(is_array($var)) { foreach ($var as $c => $v) { $var[$c] = anti($v); } }else{ $var = htmlentities( mysql_real_escape_string($var) ); } return $var; } Brigadão à todos! Abraço. OBS: Beraldo, seu blog está show! Compartilhar este post Link para o post Compartilhar em outros sites