Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][inne][PHP]Wyrażenia regularne i html
pluskwa
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.12.2010

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


Witam,

Chcę stworzyć parser pewnej strony, niestety zatrzymałem się w miejscu i nie potrafię ruszyć dalej z tematem. Na obecną chwilę udało mi się wsadzić całą parsowaną stronę do zmiennej $strona. Dowiedziałem się też że następnym krokiem będzie wyciągnięcia z niej danych za pomocą wyrażeń regularnych i funkcji preg_match. Niestety nie potrafię złożyć takiego działającego wyrażenia.

Proszę o pomoc jak by to finalnie wyglądało:

  1. preg_match('pewnien_regexp', $strona, $matches);
  2. echo ($matches);


Czy to jest poprawne? Oczywiście brak wyrażenia.
Chcę wyciągnąć dane zawarte dokładnie między takimi znacznikami:

  1. <table width="100%" cellpadding="0" cellspacing="0" border="0">


Albo jeśli będzie łatwiej z:

  1. <!-- info -->
  2. <!-- info end -->


Z góry dziękuję za pomoc!

Baardzo proszę o pomoc, męczę się z tym już drugi dzień ;/
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Baardzo proszę o pomoc, męczę się z tym już drugi dzień ;/

Bez żartów.... przez dwa dni to byś spokojnie się nauczył podstaw wyrażeń regularnych, a do tego co chcesz zrobić wymagane są właśnie podstawy wyrażeń (IMG:style_emoticons/default/smile.gif) Nie pisz więc, że siedzisz nad tym drugi dzień, bo to nie ładnie tak kłamać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
pluskwa
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.12.2010

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


Ależ owszem, nauczyłem się już podstaw ale nie wiem czy dobrze wszystko zrozumiałem. Moja propozycja to:

  1. preg_match("/(<!-- info -->).*\n\r(<!-- info end -->)/", $strona, $matches);
  2. echo "wyniki:{$matches[0]}";


Niestety nie działa ;/ dodanie modyfikatorów g i m też nie pomaga.
Po prostu nie chciałem się osmieszać (IMG:style_emoticons/default/smile.gif)

Ten post edytował pluskwa 29.01.2013, 15:01:43
Go to the top of the page
+Quote Post
tolomei
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

Jeśli chcesz wyciągać dane z html-a to zainteresuj się raczej Simple HTML DOM Parser. Dzięki niemu jesteś w stanie dotrzeć do każdej wartości, każdego atrybutu.

Jeśli strona jest pisana z palca to wystarczy, że ktoś doda jedną spację, albo da apostrof zamiast cudzysłowia i już wyrażenia regularne mogą nie zdać egzaminu.
Jeśli jednak potrzebujesz wyrażeń regularnych to tutaj znajdziesz bardzo dobry kurs.

Pozdrawiam.

PS. Podczas programowania wyniki wyświetlaj w ten sposób:

  1. echo '<pre>';
  2. print_r($matches);
  3. echo '</pre>';


To da Ci rozeznanie co wyciągnąłeś z tekstu. Pierwszy element tablicy zawsze zawiera całość, o którą pytasz w wyrażeniu.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Po prostu nie chciałem się osmieszać
Pokazanie, że coś się samemu robiło, nie jest ośmieszaniem się, wręcz odwrotnie.

Z racji, ze sam zacząłeś coś robić, prosżę, o to rozwiązanie:
  1. preg_match("/^.*<!-- info -->(.*?)<!-- info end -->.*$/s", $strona, $matches);
  2. print_r($matches);
Go to the top of the page
+Quote Post
pluskwa
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.12.2010

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


Wielkie dzięki, prawda jest taka że bez znajomości PHP ciężko jest coś samemu skleić, mówię tu o urzyciu DOM. Próbowałem lecz nawet proste wstawienie przykładu:

  1. <?php
  2. include_once('/simple_html_dom.php');
  3.  
  4. echo file_get_html('http://www.google.com/')->plaintext;
  5. ?>


Niczym nie skutkuje, to znaczy nic się nie wyświetla, oczywiście simple_html_dom.php mam w podanym folderze.
Nie wiem gdzie robię błąd, zresztą zakładałem już wątek na ten temat ale niestety się urwał.

Natomiast co do wyrażeń regexp, najłatwiej się uczyć na przykładzie lecz nigdzie nie znalazłem przykładu wyciągnięcia danych z pomiędzy danych znaczników. Może to brzmi jak kradzierz intelektualna ale na podstawie samego Tut`a ciężko samemu coś sklecić. Przestudiowałem już cały poradnik Gajdy.

Jeszcze raz dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
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: 3.10.2025 - 17:30