Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ringeril

[Resolvido] Escapando array...

Recommended Posts

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

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

<?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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.