2012-03-26 2 views
0

Bon, permet de dire que vous avez un nom de fichier « search.txt » et le contenu de ce fichier est:Rechercher ligne dans un fichier texte et afficher Oui ou Non PHP

1223 
1245 
3389 
4489 
... 

et quand vous êtes à index.php et vous recherchez "1223", il retournera TRUE, mais si vous recherchez "12" (qui reviendrait vrai pour 2 fois en raison de la première et la deuxième ligne contiennent "12"), il viendrait retour FAUX car il ne correspond pas EXACTEMENT à la ligne complète.

C'est ce que j'ai jusqu'à présent, mais il ne fonctionne pas:

$uid = $_POST['uid']; 
    $searchfile = file_get_contents('search.txt'); 

    if (preg_quote($searchfile, $uid) === false) 
    { 
     echo "NO"; 
    } 
    else 
    { 
     echo "YES"; 
    } 

Merci pour toute réponse!

+2

Ce que vous a donné l'idée 'preg_quote' rechercherait des chaînes? – deceze

+0

http://stackoverflow.com/questions/6653045/preg-match-exact-number cela aide-t-il? Passez le fichier à un tableau et recherchez le tableau (fondamentalement). –

Répondre

2

Pas tout à fait sûr que les chiffres sont séparés par une ligne ou par l'espace, mais si elle est par saut de ligne puis une doublure devrait fonctionner:

if(array_search($uid, file('search.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)) === false) { 
    echo 'no'; 
} else { 
    echo 'yes'; 
} 
0

Si le fichier ne soit pas trop grand, vous pourriez boucle à travers chaque ligne avec la fonction file():

$lines = file('search.txt'); 
$uid = $_POST['uid']; 
$found = false; 

foreach ($lines as $line){ 
    if ($line == $uid) 
     $found = true; 
} 

if ($found) 
    echo 'YES'; 
else 
    echo 'NO'; 
Questions connexes