porównanie stringów

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
102makro
Posty: 2
Rejestracja: ndz lip 31, 2005 4:14 pm

porównanie stringów

Post autor: 102makro »

Mam sobie zmienną $emadr przekazywaną z formularza do skryptu, który ma porównać go z danymi (adresy e-mail) zapisanymi w pliku tekstowym dane.txt (każdy adres w osobnej linii). Tak wygląda skrypt:
<?
$emadr=$_POST['emadr'];
$plik=file("dane.txt");
if($emadr!=""){
for ($i=0;$i<count($plik);$i++){
if(strcasecmp($emadr, $plik[$i])==0){
echo ("<b>powtarzający się wpis</b>");
exit;
}
}

}
?>
Niestety nie działa - tzn. nie pojawia się napis "powtarzający się wpis" jeżeli wartości są identyczne. Będę wdzięczny, za wskazanie błędu.
FanFataL
Nowy
Nowy
Posty: 113
Rejestracja: pn lut 28, 2005 1:33 am
Lokalizacja: Kraków / Katowice / Bydgoszcz
Kontakt:

Re: porównanie stringów

Post autor: FanFataL »

Problem jest w tym, że odczytywany z pliku adres ma na końcu znak \n czyli enter ;]

Z drugiej strony twój skrypt jest mało optymalny, mozna to zrobic łatwiej ;]
[php]<?php
$emails = array_map('trim', file('dane.txt'));
if(in_array(strtolower($emadr), $emails)) echo 'Juz istnieje';
else echo 'OK';
?>[/php]

Oczywiście do pliku zapisuj emaile po przetworzeniu ich przez funkcje [manual]strtolower[/manual] - nie będziesz wtedy miał problemów z porównywaniem ;)

Pozdrawiam :wink:
...
102makro
Posty: 2
Rejestracja: ndz lip 31, 2005 4:14 pm

Re: porównanie stringów

Post autor: 102makro »

Dziękuję bardzo. Działa i to dobrze.
ODPOWIEDZ