Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] preg_match_all wyciągnięcie danych z html
mlody69
post
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
fate
post
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


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


--------------------
Go to the top of the page
+Quote Post
robertpiaty
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


W section nazwa klasy zawiera myślniki. Trzeba je zastąpić \-


--------------------
Go to the top of the page
+Quote Post
Xelah
post
Post #4





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

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


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'));
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 Aktualny czas: 21.08.2025 - 10:27