• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wczytywanie tekstu z pliku

VPS Starter Arubacloud
0 głosów
196 wizyt
pytanie zadane 19 lipca 2017 w PHP przez Harkor Użytkownik (530 p.)

Mam plik lista.txt i w jego pierwszej linijce jest napis: abc

$myfile = fopen("lista.txt", "r");
	$nazwa=fgets($myfile);
	$nazwa2='abc';

		if($nazwa==$nazwa2)
	{
		echo"tak";
	}
	else
	{
		echo "nie";
	}

zmianna $nazwa2 jest kopią pierwszej linijki z pliku a efektem działania jest wyświetlenie "nie" czemu?

Ten kod to tylko moje nieudolne próby znalezienia błędu w kodzie który miał łączyć się z adresem którego część jest w pliku txt. PHP poprawnie łączyło link ale w takiej postaci nie potrafiło się z nim połączyć. Link na 100% jest dobry bo gdy wyświetliłem go przez echo i później wkleiłem jako zmienna w PHP to działało dobrze a gdy jest pobierany z pliku to jest coś nie tak... Wszystko sprawdziłem i to musi być wina pobierania z pliku ale nie mam pojęcia czemu i jak to naprawić...

1 odpowiedź

+1 głos
odpowiedź 19 lipca 2017 przez CenterPL Pasjonat (19,070 p.)
wybrane 19 lipca 2017 przez Harkor
 
Najlepsza
To jest dziwne, bo przekopiowałem to do siebie i działa. Jedynie zmieniłem nazwę pliku i zawartość.

Wpisz sobie echo $nazwa i zobaczysz jaką masz zawartość tej zmiennej.
komentarz 19 lipca 2017 przez Harkor Użytkownik (530 p.)

dodałem taki fragment:

	echo $nazwa;
	echo "<br>";
	echo $nazwa2;
	echo "<br>";

A efekt tego jest taki:
abc 
abc
nie

komentarz 19 lipca 2017 przez CenterPL Pasjonat (19,070 p.)
skopiowałem kropka w kropkę i działa.

Czy kodowanie plików jest takie same? Nie wiem w sumie czy ma to znaczenie, ale może. Zobacz czy na końcu linijki nie masz jakiejś spacji albo na początku. Jakiegoś dodatkowego znaku, nawet entera. Możesz wrzucić zmienne w trim() dla pewności.
komentarz 19 lipca 2017 przez Harkor Użytkownik (530 p.)
próbowałem różnych kodowań znaków i gdy w pliku jest 1 linijka jest wszystko ok ale gdy są kolejne choćby puste to już jest nie...
komentarz 19 lipca 2017 przez CenterPL Pasjonat (19,070 p.)

to dlatego, że na końcu każdej linii jest znak entera. Sprawdziłem to. Trim załatwia sprawę.

 

<?php
	$myfile = fopen("lista.txt", "r");
    $nazwa=trim(fgets($myfile));
    $nazwa2='abc';
 
    if($nazwa==$nazwa2)
    {
        echo "tak";
    }
    else
    {
        echo "nie";
    }

 

komentarz 19 lipca 2017 przez Harkor Użytkownik (530 p.)
Istotnie trim załatwił sprawę... Gdy pierwszy raz o nim wspominałeś próbowałem coś z nim ale na szybko i popełniłem mały błąd, teraz już wszystko jest ok... Dzięki wielkie za pomoc..

Podobne pytania

0 głosów
0 odpowiedzi 400 wizyt
+1 głos
0 odpowiedzi 183 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...