ayuda caracteres

Iniciado por kakashi20, 18 Septiembre 2009, 06:41 AM

0 Miembros y 1 Visitante están viendo este tema.

kakashi20

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


Con sangre andaluza :)


kakashi20

poniendole espacio en vez de % si me lo valida, pero caracteres raros como por ejemplo %, no me valida nada.

naderST

#3
Código (php) [Seleccionar]

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

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í:

Código (php) [Seleccionar]

if(strstr($archivo, "%")){
echo "no se puede";
}

WHK

#4
Código (php) [Seleccionar]
<?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
Código (php) [Seleccionar]
<?php
echo "% $test \n \x25 {$r}";
?>


a decir

Código (php) [Seleccionar]
<?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.