2009-11-14 21 views
5

Mi código:in_array() no funciona

<?php 

$pass = "12345"; 

//checkPass($pass, $user, $length); 
$file = file_get_contents("common.txt"); 
$array = explode("\n", $file); 
if(in_array($pass, $array) == true) { 
echo "it's in the array"; 
} 
?> 

primeras líneas de la matriz (i utilizan print_r ($ array) ...):

 
Array ([0] => 12345 [1] => abc123 [2] => password [3] => computer [4] => 123456 
[5] => tigger [6] => 1234 [7] => a1b2c3 [8] => qwerty [9] => 123 [10] => xxx 
[11] => money [12] => test [13] => carmen [14] => mickey [15] => secret 
[16] => summer [17] => internet [18] => service [19] => canada [20] => hello 
[21] => ranger [22] => shadow [23] => baseball [24] => donald [25] => harley 
[26] => hockey [27] => letmein [28] => maggie [29] => mike [30] => mustang 
[31] => snoopy 
+1

Se puede publicar donde se establece $ pasa igual a su valor en el momento? –

+0

Está en la parte superior del archivo, justo después de la etiqueta PHP de apertura. Intenté editarlo todo arriba, pero algo no funciona bien. – Andrew

Respuesta

24

Si su archivo utiliza saltos de línea de Windows (las líneas terminan en \r\n), obtendrá un carácter \r invisible al final de cada una de sus cadenas. Prueba para ello mediante la ejecución de strlen() en uno de ellos:

echo $array[0] . ': ' . strlen($array[0]) . ' chars'; 

Si usted consigue algo como

12345: 6 chars 

Usted sabe que ese es el problema! Usted puede deshacerse de estos personajes después de la explosión de la matriz mediante array_map() con trim():

$array = array_map('trim', $array); 
+0

gracias: D ha estado buscando un momento para esto. – Peibol

+0

gracias @Jeremy, ahí fue donde mi in_array estaba fallando. – CommentLuv

1

es $ se transfiere un valor 0 - 31?

+0

$ pase = "12345"; – Andrew

2

Esto es lo que se me ocurrió que funcionó:

<?php 

$file = file_get_contents("common.txt"); 

$array = explode("\n", $file); 

$pass = "snoopy"; 

if(in_array($pass, $array) == true) {  
    echo "it's in the array";  
}else {  
    echo "it's not";  
} 

?> 
2

es posible que desee utilizar trim en eso también. podrían ser caracteres invisibles que no se ven a simple vista.