Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] curl - wyciąganie wartości ze strony
Forum PHP.pl > Forum > Przedszkole
Manderigon
Witam.
Od razu informuję, iż szukałem i próbowałem przeróżnych sposobów na rozwiązanie tego problemu: preg_match ; preg_match_all ; regex (dość skomplikowane jak dla mnie) itp.
Mam kawałki źródła strony:

  1. <div id='user_info_cell'>
  2. <h1 class='ipsType_pagetitle'>
  3. <span class='fn nickname'>Manderigon_Back</span>
  4. </h1>
  5. Rejestracja: 24 lut 2011<br />
  6.  
  7.  
  8. <span class='ipsBadge ipsBadge_green reset_cursor' data-tooltip="Przegląda stronę główną">Dostępny</span>
  9.  
  10. <span class='desc lighter'>Ostatnio: dziś, 15:22</span>
  11. </div>


  1. <li class='clear clearfix'>
  2. <span class='row_title'>Całość postów:</span>
  3.  
  4.  
  5. <span class='row_data'>1822</span>
  6. </li>


Próbuje wyciągnąć informację dotyczącą mojego nicku i postów oraz umieścić ją na stronie, robię to następująco (urywek kodu):

  1. $nick = GetBetween($source,"<h3 class='maintitle'>","</h3><div class='border'>");
  2.  
  3. $posty = GetBetween($source, " post", " na dzie");
  4. $posty = GetBetween($posty, "row_data", "(");
  5. $posty = GetBetween($posty, ">", " ");


Niestety, nic mi nie wyświetla. Co mogę zrobić?
Pozdrawiam, Bartek.
jacobson
Niestety zeby ogarnac cURL-a trzeba zaczac od wyrazen regularnych bo bez nich ani rusz. Wtedy preg_match i inne rzeczy przydatne pojda z gorki ;p
wNogachSpisz
http://stackoverflow.com/questions/3577641...s-html-with-php


Osobiście wole to robic przy pomocy javascript i funkcji document.querySelector()
Manderigon
Zatrzymałem się na kolejnym problemie, postanowiłem zacząć od czegoś mniejszego: (urywek źródła)


  1. <li class='clear clearfix'>
  2. <span class='row_title'>Całość postów:</span>
  3.  
  4.  
  5. <span class='row_data'>1822</span>
  6. </li>



  1. <?php
  2.  
  3. $zrodlo = file_get_contents('TUTAJ_LINK');
  4. preg_match('|<span class=\'row_title\'>Całość postów:</span><span class=\'row_data\'>([0-9]{0,5})|', $zrodlo, $posty);
  5. echo $posty[0];
  6.  
  7. ?>


Pomiędzy "Całość postów:</span>", a "<span class='row_data'>1822</span>" występuje enter. Jak poprawić kod, aby ten skrypt odczytał entery i poprawnie funkcjonował>
Pzdr.
Pawel_W
http://php.net/manual/en/reference.pcre.pa...n.modifiers.php

musisz dodać na końcu wyrażenia odpowiednią flagę, było to bodajże "s" smile.gif
Manderigon
W efekcie otrzymuje pustkę... sad.gif
wNogachSpisz
Tego się nie robi przy pomocy wyrażeń regularnych.
HTML to opisowy język hierarchiczny, małe wyrażenia regularne nie są w stanie rozpoznać hierarchicznych zależność między elementami dokumentu. To po pierwsze.
Po drugie HTML dopuszcza nieskończoną ilość wariantów zapisu znacznika – małe i duże litery, białe znaki i wiele innych.

Z dokumentu HTML należy stworzyć drzewo DOM i przez nie traversować.
Mechanizm dopasowywania wzroców dostarczany przez wyrażenia regularne kompletnie się do tego nie nadaje.

Dostałeś link do stackoverflow kilka postów wyżej.
Zajrzałeś tam? Jesteś kolejnym śmierdzącym leniem czekającym na gotowe?
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.