Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match_all wyciągnięcie danych z html
Forum PHP.pl > Forum > Przedszkole
mlody69
Witam,
posiadam następujący fragment html'a:
Kod
<section class="item image shadow-max overflow adds-on-image" style="max-width: 500px; max-height: 332px; height: 332px;">
            <a href="/123456/tytul.html" title="Tytuł">
                <img alt="Tytuł" src="/images/items/fcfb996a0446679bxb5f128269542b55.jpg" title="Tytuł">
            </a>
        </section>

A mój kod PHP wygląda tak:
  1. preg_match_all('/<section class="item image shadow-max overflow adds-on-image" style="(.*)">
  2. <a href="(.*)" title="(.*)">
  3. <img alt="(.*)" src="(.*)" title="(.*)"\/>
  4. <\/a>/', $content, $res);

Niestety po uruchomieniu tablica $res jest pusta i kompletnie nie wiem gdzie leży problem.
fate
mam nadzieję że $content nie jest puste nerdsmiley.png

w img szukasz "/" a go nie masz w stringu
brak section na zamknieciu pewnie bedziesz potrzebowal
białe znaki, nie tylko nowa linia ale i taby

  1. /<section class="item image shadow-max overflow adds-on-image" style="(.*)">(.*)<a href="(.*)" title="(.*)">(.*)<img alt="(.*)" src="(.*)" title="(.*)">(.*)<\/a>(.*)<\/section>/ism


Bodajże \s możesz uzyc w miejscu białych znaków zamiast (.*) ale nie pamietam dokladnie
robertpiaty
W section nazwa klasy zawiera myślniki. Trzeba je zastąpić \-
Xelah
W przyszłości możesz spróbować nieco mniej masochistycznego podejścia do parsowania DOM :)

  1. $doc = new DomDocument(1.0, 'UTF-8');
  2. @$doc->loadHTML('<?xml encoding="UTF-8"><section class="item image shadow-max overflow adds-on-image" style="max-width: 500px; max-height: 332px; height: 332px;">
  3. <a href="/123456/tytul.html" title="Tytuł">
  4. <img alt="Tytuł" src="/images/items/fcfb996a0446679bxb5f128269542b55.jpg" title="Tytuł">
  5. </a>
  6. </section>');
  7.  
  8. $xpath = new DOMXPath($doc);
  9. $elements = $xpath->query('//section[@class="item image shadow-max overflow adds-on-image"]/a');
  10.  
  11. var_dump($elements->item(0)->getAttribute('title'));
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.