hola
hice esta funcion para validar a la hora de subir archivos que el nombre del archivo no contenga el caracter %, pero el if no me funciona, si alguien me podria ayudar s elo agradeceria, tambien quisiera si en caso tal me funcionara el if, como detener el for apenas encuentre el caracter.
for ($i=0; $i<strlen($archivo);$i++){
$cad=substr($archivo,$i,$i++);
if($cad=="%"){
echo"no se puede";
}
}
gracias
Ponle un espacio a ver que sale.
Suerte
poniendole espacio en vez de % si me lo valida, pero caracteres raros como por ejemplo %, no me valida nada.
for ($i=0; $i<strlen($archivo);$i++){
$cad=substr($archivo,$i,1);
if($cad == "%"){
echo"no se puede";
}
}
http://ve2.php.net/manual/en/function.substr.php (http://ve2.php.net/manual/en/function.substr.php)
También puedes usar strstr(), ya que con el bucle si el nombre del archivo tiene varios % imprimiría varias veces "no se puede", en cambio con strstr() lo imprimiría solo una vez sería algo así:
if(strstr($archivo, "%")){
echo "no se puede";
}
<?php
if(eregi('%', $archivo)
die('error');
?>
Además no te funcionaba porque usas "%" y php lo toma como partede una variable al igual que usas printf, es como si pusieras \ en ves de \\ , hay muchas diferencias entre declarar un string entre comillas simples y dobles ya que con dobles puedes hacer escapes, escribir hexadecimal, unir variables, etc pero con comillas simple el string se mantiene tal como es.
No es lo mismo
<?php
echo "% $test \n \x25 {$r}";
?>
a decir
<?php
echo '% $test \n \x25 {$r}';
?>
Que pasa si haces un loop con cada carácter?, si es un carácter demasiado largo y muchas querys similares podría causar una denegación de servicio por memory exhaustion.