Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Porównanie napisów - nie działa
agrutko
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 22.10.2013

Ostrzeżenie: (0%)
-----


Witam wszystkich serdecznie smile.gif)

Mam elementarny problem z porównywaniem napisów. Oto zawartość plików:

test.txt:

aa;bb
cc;dd

test.php:
  1. <?php
  2. $plik = file("test.txt");
  3. $wiersz = explode(";",$plik[0]);
  4. if($wiersz[0]=="aa")
  5. echo "TO SAMO<br/>";
  6. if($wiersz[1]=="bb")
  7. echo "PONOWNIE TO SAMO<br/>";
  8. if(!strcmp($wiersz[0],"aa"))
  9. echo "TO SAMO<br/>";
  10. if(!strcmp($wiersz[1],"bb"))
  11. echo "PONOWNIE TO SAMO<br/>";
  12. ?>


Otwarcie tego skryptu w przeglądarce wita mnie pustym ekranem mimo że powinno być dwa razy "TO SAMO". Dlaczego?

PS. Gdy przed instrukcjami warunkowymi dodałem:
$wiersz[0] = trim($wiersz[0]);
$wiersz[1] = trim($wiersz[1]);
to dwa razy wyświetlił PONOWNIE TO SAMO. Czyli, że porównanie "bb" z pliku z "bb" w skrypcie się powodzi, ale "aa" już nie.


Ten post edytował agrutko 22.10.2013, 22:29:07
Go to the top of the page
+Quote Post
klima06
post
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 10
Dołączył: 21.10.2011
Skąd: UK / PL

Ostrzeżenie: (0%)
-----


Usuń enter na początku pliku txt lub zwiększ index w linijce 3, a będzie działać tak jak chcesz wink.gif

Ten post edytował klima06 22.10.2013, 22:28:35
Go to the top of the page
+Quote Post
agrutko
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 22.10.2013

Ostrzeżenie: (0%)
-----


Na początku pliku txt nie ma entera, a $wiersz[0] i $wiersz[1] przechowują odpowiednio "aa" i "bb" (wyświetliłem je dla testu) - czyli tak jak zakładam sad.gif

Skrypt z testowym fragmentem:

  1. <?php
  2. $plik = file("test.txt");
  3. $wiersz = explode(";",$plik[0]);
  4. $wiersz[0] = trim($wiersz[0]);
  5. $wiersz[1] = trim($wiersz[1]);
  6. echo $wiersz[0]." ".$wiersz[1]."<br/>";
  7. if($wiersz[0]=="aa")
  8. echo "TO SAMO<br/>";
  9. if($wiersz[1]=="bb")
  10. echo "PONOWNIE TO SAMO<br/>";
  11. if(!strcmp($wiersz[0],"aa"))
  12. echo "TO SAMO<br/>";
  13. if(!strcmp($wiersz[1],"bb"))
  14. echo "PONOWNIE TO SAMO<br/>";
  15. ?>


Wynik to:

aa bb
PONOWNIE TO SAMO
PONOWNIE TO SAMO

Ten post edytował agrutko 22.10.2013, 22:38:06
Go to the top of the page
+Quote Post
klima06
post
Post #4





Grupa: Zarejestrowani
Postów: 48
Pomógł: 10
Dołączył: 21.10.2011
Skąd: UK / PL

Ostrzeżenie: (0%)
-----


Coś Ci PHP świruje, bo u mnie wszystko dobrze działa.
Potwierdzenie:

test.php
  1. <?php
  2. $plik = file("test.txt");
  3. $wiersz = explode(";",$plik[0]);
  4. if($wiersz[0]=="aa")
  5. echo "TO SAMO<br/>";
  6. if($wiersz[1]=="bb")
  7. echo "PONOWNIE TO SAMO<br/>";
  8. if(!strcmp($wiersz[0],"aa"))
  9. echo "TO SAMO<br/>";
  10. if(!strcmp($wiersz[1],"bb"))
  11. echo "PONOWNIE TO SAMO<br/>";
  12. ?>


test.txt
Kod
aa;bb
cc;dd


Output:
Kod
TO SAMO
TO SAMO


@edit
A spróbuj zamienić "==" na "===" wink.gif

Ten post edytował klima06 22.10.2013, 22:50:10
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Musisz pominąć znaki nowego wiersza (co nota bene powinno być moim zdaniem domyślnym zachowaniem funkcji file):
  1. $plik = file("test.txt", FILE_IGNORE_NEW_LINES);
Go to the top of the page
+Quote Post
agrutko
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 22.10.2013

Ostrzeżenie: (0%)
-----


klima06

Skopiowałem Twój kod. Po uruchomieniu nadal jest pusto. Po zamianie na potrójne znaki równości nic się nie poprawiło. Przekopiowałem skrypt na serwer, efekt jest taki sam - nic nie pokazuje.

SmokAnalog

Dodanie tego parametru do kodu klima06 spowodowało, że wyświetlił dwa razy PONOWNIE TO SAMO co znaczy, że nadal nie działa sad.gif

Spróbuję jeszcze usunąć kodowanie tych plików. Oba ustawiłem na UTF-8 i tu może być problem. Jeśli nie.... to nie wiem sad.gif

Edit:
Przekonwertowałem oba pliki do UTF-8 (bez BOM) i działa. W kodowaniu ANSI również. Nie rozumiem dlaczego ma problem z UTF-8...

Dzięki za chęć pomocy chłopaki

Ten post edytował agrutko 23.10.2013, 00:10:56
Go to the top of the page
+Quote Post
Wazniak96
post
Post #7





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Sprawdź jak wyglądają dane w tablicy, czyli:
  1. print_r($plik);
  2. //.....
  3. print_r($wiersz)_
i wszystko powinno być jasne wink.gif
Go to the top of the page
+Quote Post
freemp3
post
Post #8





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Cytat
Nie rozumiem dlaczego ma problem z UTF-8...

Ponieważ UTF-8 z BOM dodaje na początku pliku dodatkowy znacznik. To zapewne on powodował problemy.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 22:29