Comparaison chaines php
Résolu
cecile302
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
cecile302 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
cecile302 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Bonjour a toutes et à tous,
J'essaye de créer une fonction php me permettant de comparer l'adresse ip d'un membre connecté, avec un fichier comportant une liste d'adresses ip, mon code source donne quelque chose comme ça :
Le souci, c'est que ça ne fonctionne pas, à chaque fois qu'il les compare, il les définit en différentes, j'ai essayé plusieurs fonctions, rien n'y fait, avez vous une solution ??
merci d'avance !
J'essaye de créer une fonction php me permettant de comparer l'adresse ip d'un membre connecté, avec un fichier comportant une liste d'adresses ip, mon code source donne quelque chose comme ça :
fichier="courant.txt"; //fichier comprenant les adresses ip $tabfich=file($fichier); $compte=count($tabfich); for( $i = 0 ; $i <$compte ; $i++ ) { $adressmemo=(($tabfich[$i])); $monadresse=(strval($REMOTE_ADDR)); if ((($adressmemo))==(strval($monadresse))) { echo "adresses similaires :". $adressmemo." ".$monadresse."<br>"; } else { echo ""adresses différentes :".$adressmemo." ".$monadresse."<br>"; } }
Le souci, c'est que ça ne fonctionne pas, à chaque fois qu'il les compare, il les définit en différentes, j'ai essayé plusieurs fonctions, rien n'y fait, avez vous une solution ??
merci d'avance !
A voir également:
- Php comparaison
- Comparaison million milliard - Accueil - Technologies
- Easy php - Télécharger - Divers Web & Internet
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Expert php pinterest - Télécharger - Langages
- Comparaison samsung a15 et a16 - Accueil - Téléphones
5 réponses
effectivement,
de mon côté j'ai testé avec un trim qui efface tout ce qui est en trop sans avoir besoin de préciser :
$fichier="courant.txt"; //fichier comprenant les adresses ip
$tabfich=file($fichier);
$compte=count($tabfich);
for( $i = 0 ; $i <$compte ; $i++ )
{
$adressmemo=trim($tabfich[$i]);
$monadresse=strval($REMOTE_ADDR);
if (strcmp($adressmemo,$monadresse)==0)
{
echo "adresses similaires :". $adressmemo." ".$monadresse."<br>";
}
else
{
echo "adresses différentes :".$adressmemo." ".$monadresse."<br>";
}
}
de mon côté j'ai testé avec un trim qui efface tout ce qui est en trop sans avoir besoin de préciser :
$fichier="courant.txt"; //fichier comprenant les adresses ip
$tabfich=file($fichier);
$compte=count($tabfich);
for( $i = 0 ; $i <$compte ; $i++ )
{
$adressmemo=trim($tabfich[$i]);
$monadresse=strval($REMOTE_ADDR);
if (strcmp($adressmemo,$monadresse)==0)
{
echo "adresses similaires :". $adressmemo." ".$monadresse."<br>";
}
else
{
echo "adresses différentes :".$adressmemo." ".$monadresse."<br>";
}
}
Coucou c'est PersonneNeMAime alors c'etait les caracteres retour charriot, j'ai fais des tests et la, ca marche :
<?
$fichier="courant.txt"; //fichier comprenant les adresses ip
$tabfich=file($fichier);
$compte=count($tabfich);
for($i=0;$i<$compte;$i++)
{
$adressmemo=$tabfich[$i];
$adressmemo=str_replace(chr(10), "", $adressmemo);
$adressmemo=str_replace(chr(13), "", $adressmemo);
$monadresse=$_SERVER["REMOTE_ADDR"];
if ($adressmemo == $monadresse)
{
echo "adresses similaires :". $adressmemo." ".$monadresse."<br>";
}
else
{
echo "adresses différentes :". $adressmemo." ".$monadresse."<br>";
}
}
?>
<?
$fichier="courant.txt"; //fichier comprenant les adresses ip
$tabfich=file($fichier);
$compte=count($tabfich);
for($i=0;$i<$compte;$i++)
{
$adressmemo=$tabfich[$i];
$adressmemo=str_replace(chr(10), "", $adressmemo);
$adressmemo=str_replace(chr(13), "", $adressmemo);
$monadresse=$_SERVER["REMOTE_ADDR"];
if ($adressmemo == $monadresse)
{
echo "adresses similaires :". $adressmemo." ".$monadresse."<br>";
}
else
{
echo "adresses différentes :". $adressmemo." ".$monadresse."<br>";
}
}
?>
Salut,
pour comparer 2 chaines en php, il utiliser strcmp
https://www.php.net/manual/fr/function.strcmp.php
a+
pour comparer 2 chaines en php, il utiliser strcmp
https://www.php.net/manual/fr/function.strcmp.php
a+
Merci de m'avoir répondu, j'ai pensé à la fonction strcmp, mais le résultat es le même, il distingue systématiquement les deux valeurs et les considère comme différentes, le problème étant que l'une est une adresse ip, et l'autre vient d'un fichier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup Jean Marie, ta solution fonctionne ^^, meme si j'ai pas vraiment compris pourquoi ça ne fonctionnait pas chez mois :s
en tout cas là c'est parfait
Merci aussi aux autres, et notamment a toi "personnenemaime" qui m'a retrouvée jusqu'ici
en tout cas là c'est parfait
Merci aussi aux autres, et notamment a toi "personnenemaime" qui m'a retrouvée jusqu'ici
Bonjour,
C'est pas bien de rester sans comprendre le pourquoi du comment ^^
Le problème venait de la fonction file(), qui, par défaut, garde les retours à la ligne dans les valeurs du tableau.
C'est un caractère qui ne se voit pas en HTML... Par contre, si tu avais fait "afficher la source" sur ta page de résultats, tu aurais vu ce retour à la ligne !
Pour information, ce comportement de la fonction file() est modifiable : https://www.php.net/manual/fr/function.file.php
Donc en remplaçant
$tabfich=file($fichier);
par
$tabfich=file($fichier, FILE_IGNORE_NEW_LINES);
Tu aurais aussi résolu ton problème.
Xavier
C'est pas bien de rester sans comprendre le pourquoi du comment ^^
Le problème venait de la fonction file(), qui, par défaut, garde les retours à la ligne dans les valeurs du tableau.
C'est un caractère qui ne se voit pas en HTML... Par contre, si tu avais fait "afficher la source" sur ta page de résultats, tu aurais vu ce retour à la ligne !
Pour information, ce comportement de la fonction file() est modifiable : https://www.php.net/manual/fr/function.file.php
Donc en remplaçant
$tabfich=file($fichier);
par
$tabfich=file($fichier, FILE_IGNORE_NEW_LINES);
Tu aurais aussi résolu ton problème.
Xavier