Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] wyszukiwanie stringów, preg_match
soulreaver1
post 28.04.2008, 14:49:45
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


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. ?>


Ten post edytował soulreaver1 28.04.2008, 15:38:01
Go to the top of the page
+Quote Post
Cezar708
post 28.04.2008, 15:38:40
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


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()
Go to the top of the page
+Quote Post
soulreaver1
post 28.04.2008, 16:53:50
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Mam PHP 4.4.7
Go to the top of the page
+Quote Post
Cezar708
post 28.04.2008, 17:17:10
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


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
Go to the top of the page
+Quote Post
soulreaver1
post 28.04.2008, 17:20:12
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Już wszystko działa, dzięki

Ten post edytował soulreaver1 28.04.2008, 17:24:16
Go to the top of the page
+Quote Post
Cezar708
post 28.04.2008, 17:29:08
Post #6





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


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

Ten post edytował Cezar708 28.04.2008, 17:30:28
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:15