Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie mogę wyświetlić zawartości zmiennej
Forum PHP.pl > Forum > Przedszkole
-Mobi-
  1. $nazwa = file_get_contents($i);
  2.  
  3. print_r($nazwa);
  4. var_dump($nazwa);
  5.  
  6. if (preg_match('/jabłko/ims',$nazwa)) {
  7. echo "znaleziono słowo"; }
  8. else { echo "nic nie znaleziono"; }


Mimo, iż zmienna zawiera dane, bo gdy na stronie linkowanej jest słowo 'jabłko' dostaję info, że słowo jest znalezione, a gdy go nie ma dostaję info, że nie ma tego słowa, to jednak
za chiny nie mogę wyświetlić tej zmiennej.

Print_r() nic nie zwraca, a var_dump() zwraca: bool(false).

Jak to ma się do tego, że w zmiennej jest content questionmark.gif
Dlaczego nie mogę go wyświetlić, natomiast mogę na nim operować za pomocą preg_match ?




peter13135
coś oszukujesz. Daj więcej kodu.
-Mobi-
Proszę:

  1.  
  2. $sql = 'SELECT id, link FROM `m` WHERE id < 3358608 and id > 3358494 ;' ;
  3.  
  4.  
  5. $resultx = mysql_query($sql);
  6.  
  7.  
  8. if(mysql_num_rows($resultx) > 0) {
  9.  
  10.  
  11. while($row123 = mysql_fetch_assoc($resultx))
  12.  
  13. {
  14.  
  15. echo $id=$row123['id'];
  16. echo " ";
  17.  
  18. $i=trim($row123['link']);
  19. echo "<a href='".$i."'>".$i."</a>";
  20.  
  21. $nazwa = file_get_contents($i);
  22.  
  23.  
  24. if (preg_match('/jabłko/ims',$nazwa)) {
  25.  
  26. echo "znaleziono słowo"; }
  27.  
  28. else { echo "nic nie znaleziono"; }
  29.  
  30.  
  31. }
  32.  
  33.  
  34. }
  35.  
  36.  
zamper
Na samym początku tego pliku napisz:



Spróbuj zadać takie coś:
  1. $sql = "SELECT id, link FROM 'm' WHERE id < 3358608 and id > 3358494";

Masz jakieś przekrzywione apostrofy (`) otaczające literę 'm';
-------
Co to jest ?:
  1. echo $id=$row123['id'];
Pierwszy raz takie coś widzę i nie wiem czy to jest poprawne :/
-Mobi-
Ta część działa poprawnie...
zamper
Dałeś error_reporting(E_ALL); na początku ?

W takim razie jak działa poprawnie to czego nie możesz wyświetlić ?
Co jakiś czas dawaj instrukcje
  1. echo $zmienna;
aby śledzić wartość zmiennej.
-Mobi-
Rzeczywiście dostaje jakieś błędy:
[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found

Problem jest taki, że np ten link mogę pobrać:

  1. http://myshow1909.wrzuta.pl/sr/f/0CJywGDUZ2D/rihanna-only_girl_in_the_world_.mp3
  2. ale tego już nie:
  3. <a href="http://c.wrzuta.pl/wa99/63d462d50009b8df4a8fce9c/0/04%20grubson%20-%20nie%20ma%20nic.mp3" target="_blank">http://c.wrzuta.pl/wa99/63d462d50009b8df4a...%20ma%20nic.mp3</a>
  4. a tym bardziej tego:
  5. <a href="http://milkshakedreamsxd.wrzuta.pl/sr/f/8tY2HGM2cif/bruno_mars_-_the_lazy_song" target="_blank">http://milkshakedreamsxd.wrzuta.pl/sr/f/8t...-_the_lazy_song</a>


Zależy mi na napisaniu skryptu, który będzie sprawdzał czy link jest ok (tak jak ten 2) czy nie tak jak te pozostałe.

Jak więc to zrobić ?
zamper
//Wydaje mi się że to nie Twoja wina, ale zabezpieczenia serwerów ci na to nie pozwalają (nie jestem tego pewien).
Czekaj!
Spróbuj sobie wkleić te linki na pasek adresu i nacisnąć enter !
-Mobi-
Dziwnie mi parser pozamieniał te linki, ale ogólnie ten drugi tylko mogę pobrać a pozostałe zwracają błąd i chciałbym napisać skrypt, który sprawdzi linki, które zwracają błąd a te, które da się pobrać, sprawdzi czy nie zawierają słowa 'przepraszamy'.

Mogę zapłacić za pomoc.
-Mobi-
Zamper robiłem to, i wiem że dostaję błąd 404 itp, ale jak to sprawdzić w skrypcie ?
zamper
Pffffffffff. Nie musisz płacić. Tutaj na forum pomagamy sobie prawie bezinteresownie wink.gif A co do tego jak sprawdzić czy ten link działa a tamten nie to nie wiem czy jest taka możliwość w php. Można spróbować stłumić błąd (@) i wychwycić wyjątek, ale nie wiem czy to podziała. Zaraz coś wykombinuję wink.gif
Jak napisałeś że zapłacisz zaraz się pojawi lawina postów ;P.


Mam !
"W przypadku niepowodzenia, file_get_contents () zwróci FALSE."
-Mobi-
Myślałem, że pomoże zamiana
  1. if (preg_match('/przepraszamy/ims',$nazwa))

na
  1. if (preg_match('/przepraszamy/ims',$nazwa) || empty($nazwa)),

ale wtedy wszystkie linki oznacza mi jako złe...
-Mobi-
Hehe, z doświadczenia wiem, że nie wszyscy są tacy bezinteresowni jak Ty :]
zamper
W przypadku niepowodzenia, file_get_contents () zwróci FALSE.

Stłum błędy @ i zrób warunek. Jeżeli file_get_contents () zwróci FALSE link jest niepoprawny biggrin.gif

  1. @ $nazwa = file_get_contents($i);
  2. if($nazwa==false) {echo 'link jest nie poprawny';exit;}


Manual na temat file_get_contest() przetłumaczone przez Google biggrin.gif
-Mobi-
Zrobiłem tak, ale jako blednę oznacza mi to również dobre linki, np:
http://c.wrzuta.pl/wa5802/21ab751f00148f99...nowa%20fala.mp3

@$nazwa = file_get_contents($i);

if (preg_match('/przepraszamy/ims',$nazwa) || ($nazwa==false)) { echo 'zly link }'
zamper
Nie tak zrób to tak:

  1. @ $nazwa = file_get_contents($i);
  2. if($nazwa==false) {echo 'link jest nie poprawny';exit;}
  3. if (preg_match('/przepra')//........................................



#Jeśli otwierasz URI znaków specjalnych, takich jak spacje, musisz zakodować URI z urlencode () . (Manual)
Nie używaj preg_match (), jeśli chcesz tylko sprawdzić, czy jeden ciąg jest zawarty w inny ciąg. Użyj stristr()
-Mobi-
Dalej wszystkie linki oznacza mi jako niepoprawne, spróbuj np dla tego linka:
  1. http://techn0.wrzuta.pl/sr/f/50iA5vkvZ5K/02_grubson_-_nowa_fala

Zobaczysz, że Twój sposób oznaczy go jako niepoprawny, mimo iż tak nie jest :/
zamper
Usuń preg_match() i całą tą instrukcje i powinno być dobrze wink.gif
Ma być tak jak poniżej. Jak nie to już nie wiem :|
  1. $sql = 'SELECT id, link FROM `m` WHERE id < 3358608 and id > 3358494 ;' ;
  2. $resultx = mysql_query($sql);
  3. if(mysql_num_rows($resultx) > 0) {
  4. while($row123 = mysql_fetch_assoc($resultx)){
  5. echo $id=$row123['id'];
  6. echo " ";
  7. $i=trim($row123['link']);
  8. echo "<a href='".$i."'>".$i."</a>";
  9.  
  10. if($nazwa===false || $nazwa==false) {echo 'blad';exit;}
  11. }
  12.  
  13.  
  14. }
-Mobi-
Usunąłem, niestety ciągle oznacza mi dobre linki jako niepoprawne :/
No trudno, będę dalej kombinował, w każdym razie wielkie dzięki za zaangażowanie!
zamper
Nie ma co. Fajse jet wtedy kiedy otwierasz strone taką jak np:
www.sadfghdsgfhgf.sdgfhgddth.pl
Można użyć jeszcze desperacko
do znalezienia ciągu typu "error","przepraszamy","404", lecz nie zawsze będzie działać więc takie rozwiązanie jest do d**y. Napisz do kogoś kto ma większe doświadczenie na tym forum (jakiś stały bywalec). Ale wydaje mi się że będzie ciężko z rozwiązaniem tego problemu.


A zrobiłeś:
  1. if($nazwa===false || $nazwa==false) {echo 'blad';exit;}
questionmark.gif
-Mobi-
Niestety, żaden z tych sposobów nie działa. Kto by pomyślał, że będzie z tym taki problem.
Sory, za stracony na mnie czas...
zamper
Nie. To ja straciłem twój.
Jak zasłużyłem to naciśnij że pomogłem wink.gif
-Mobi-
Niestety nie widzę takiej opcji ?
zamper
Jakiej znowu opcji ?
-Mobi-
Przycisku, że pomogłeś.
zamper
Aaa. Musiał byś być zarejestrowany.
A co do tematu to co ty wgl za stronę tworzysz ? Może znajdzie się inny sposób na to wszystko wink.gif
-Mobi-
Taki muzyczny portalik...
Może i się znajdzie inny sposób, ale problem pozostaje ten sam...
zamper
Nie.
Co ten skrypt ma dokładnie robić. Może są inne funkcje, rozwiązujące ten problem!
-Mobi-
Rozpoznawać linki, które nie działają.
Tak jak na początku podałem te 3 linki, tylko 1 jest poprawny i skrypt ma sprawdzać, który jest poprawny a który nie.
zamper
Nie jestem pewien ale możesz coś pokombinować z biblioteką cUrl
Lekcja 13
to może być to, poczytaj o tym też gdzieś indziej bo tam może być nie wszystko pokazane smile.gif

pomoc
pomoc 2
Poradzisz sobie tongue.gif
-Mobi-
Hehe, z cURL kombinowałem wcześniej, ale wrzuta to blokuje wink.gif
Musiałem przejść na file_get_contente
zamper
Acha. To raczej nic z tego :/
-Mobi-
No niestety ;/
Wilwarin
To zależy też od hostingu... U mnie też się nie dało użyć file_get_contents.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.