Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne - odwieczne problemy!
Forum PHP.pl > Forum > PHP
Martio_L
Mam do Was ogromną prośbę. Nie mogę sobie poradzić z wyrażeniami regularnymi. Dla mnie to jest czarna magia. Szczególnie w połączeniu z preg_match. Mam dwie książki o php za sumę 150 zł i nic tam praktycznego nie ma na ten temat. Przez 2 osatnie godziny szukałem poprzez Google. Nawet manula php jest beznadziejny w tej sprawie sad.gif Wy jesteście moją ostatnią szansą...

Zadanie mojego skryptu:

Poprzez wyszukiwarkę serwisu gry.wp.pl poszukuję gry XXX. Teraz chciałbym z wyników pobrać tablice z linkami w formie $link[url][opis]

Linki wynikowe wyszukiwania mają następujący format:

Kod
<a href="filtr;0,0;x;gra,33,11043,5548838;FIFA_Street_2;core.html" class="tlink" >FIFA Street 2</a>


a więc chciałbym wyciągnąć ten fragment:

Kod
<a href="URL" class="tlink" >OPIS</a>


użyłem do tego coś takiego:

Kod
preg_match('/<a href="(.*?)" class="tlink" >(.*?)<\/a>/', $strona, $wynik);


Jednak zwraca mi same badziewie - stringi o 496 znakach.

Listing całego skryptu:

Kod
$slowo = "fifa";
$wzor_pole = '/<!-- srodkowa kolumna START -->(.*?)<!-- srodkowa kolumna KONIEC -->/';
$wzor_link = '/<a href="(.*?)" class="tlink" >(.*?)<\/a>/';
$url = "http://gry.wp.pl/filtr;0,0;x;szukaj,36,9,$slowo,5548838;core.html";

$zawartosc = file_get_contents($url);
$zawartosc = preg_replace("/\r/", "", $zawartosc);
$zawartosc = preg_replace("/\n/", "", $zawartosc);

preg_match($wzor_pole, $zawartosc, $pole);
preg_match($wzor_link, $pole[0], $wynik);

var_dump($wynik);


Czy ktoś może mi w miarę pilnie pomóc? Już na prawdę nie ma sił dalej walczyć z tymi wyrażeniami regularnymi...
SongoQ
Cytat
Mam dwie książki o php za sumę 150 zł

Moze za malo informacji w nich?

Temat kwalifikuje sie do podstaw php
Radarek
  1. <?php
  2. $slowo = "fifa";
  3. $wzor_pole = '/<!-- srodkowa kolumna START -->(.*?)<!-- srodkowa kolumna KONIEC -->/';
  4. $wzor_link = '/<a href="([^"]*)" class="tlink" >([^<]*)</a>/';
  5. $url = "http://gry.wp.pl/filtr;0,0;x;szukaj,36,9,$slowo,5548838;core.html";
  6.  
  7. $zawartosc = file_get_contents($url);
  8. $zawartosc = preg_replace("/r/", "", $zawartosc);
  9. $zawartosc = preg_replace("/n/", "", $zawartosc);
  10.  
  11. preg_match($wzor_pole, $zawartosc, $pole);
  12. preg_match_all($wzor_link, $pole[0], $wynik);
  13.  
  14. var_dump($wynik);
  15. ?>


Dam ci wskazowke. Jesli bedziesz kiedys pisal cos z wykorzystaniem regexow to rob to malymi kroczkami, tzn dokladaj do regexa kilka znakow i testuj co lapie. Inaczej ciezko nad tym zapanowac.
dtb
  1. <?php
  2. preg_match_all ('#<a href="([^"]+)" class="tlink" >([^<]+)</a>#', $match, $zawartosc_strony_z_wynikami);
  3. ?>
hwao
czego jeszcze zadnen mod nie przeniosl tego do opowiedniego miejsca? aarambo.gif
FiDO
Wszyscy spia? smile.gif
Juz przenosze..
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.