Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyszukiwanie stringów, preg_match
Forum PHP.pl > Forum > Przedszkole
soulreaver1
Witam.

Mam problem z moim skryptem. Z założenia miał odczytywać plik ze zdalnego serwera, wyszukiwać określony string według wzorca, a następnie go wyświetlić. Niestety coś jest źle...

Kod
[b]Warning[/b]: Wrong parameter count for fgets() in [b]c:\program  files\webserv\httpd\nowy dokument tekstowy.php[/b] on line [b]11[/b]


  1. <?php
  2. $plik = fopen("http://www.cos.pl/cos2/1/plik.php\"\"r\");
  3. if ($plik == NULL) {
  4. echo \"Błąd otwarcia pliku\";
  5. }
  6. else
  7. {
  8. while (!feof($plik))
  9. {
  10. $bufor = htmlentities(fgets($plik));
  11. if (preg_match("/http.*?rar/&#092;", $bufor, $tab))
  12. echo $tab[0];
  13. }
  14.  
  15. fclose($plik);
  16. }
  17. ?>
Cezar708
Witam,

wszystko wskazuje, że masz PHP w wersji niższej niż 4.2.0, ponieważ do tej wersji był wymagany drugi parametr length. Dopiero w wersji PHP 4.2.0 ten parametr stał się opcjonalny i nie musiał być podawany.

są wiec dwa wyjścia...
1. robisz upgrade PHP do wersji co najmniej 4.2.0 (aczkolwiek sugeruję robić update do wersji 5.x)
2. podajesz drugi parametr do funkcji fgets() i dzięki temu nie wyświetli Ci się warning.

Oczywiście polecam opcję 1 z upgrade do PHP5

Pozdrawiam

PS: wersję PHP odczytasz wykorzystując funkcję phpinfo()
soulreaver1
Mam PHP 4.4.7
Cezar708
spróbuj dwóch rozwiązań

1. zamiast linii:
  1. <?php
  2. $bufor = htmlentities(fgets($plik));
  3. ?>

daj:
  1. <?php
  2. $bufor = htmlentities(fgets($plik, 1024));
  3. ?>


2. ustaw parametr auto_detect_line_endings w php.ini na 1

Pozdrawiam i daj znać jak
Cezar708
soulreaver1
Już wszystko działa, dzięki
Cezar708
a może w ogóle napisz inaczej kod nie korzystając z tej funkcji...

proponuję:

  1. <?php
  2. $plik = file("http://www.cos.pl/cos2/1/plik.php");
  3. if ($plik === false) {
  4. echo "Błąd otwarcia pliku";
  5. }
  6. else
  7. {
  8. foreach($plik as $wiersz){
  9. $bufor = htmlentities( $wiersz );
  10. if (preg_match("/http.*?rar/", $bufor, $tab))
  11. echo $tab[0];
  12. }
  13. }
  14. ?>


nie wiem co chcesz osiągną, ale ten skrypt powinien działać wg Twoich założeń.


Pozdrawiam
Cezar708

~EDIT
Posta dodałem nieświadomy edycji powyższego ;P
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.