Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
wujeke
Witam i kurcze, znowu mam ten sam problem.... próbuję i próbuję napisać wyrażenie regularne dla poniższego tekstu:

  1. <div id="PeopleOnline"><p class="top"><span>97,583</span> people currently online</p>


interesuje mnie tylko liczba (z przecinkiem)



to co naskrobałem pewnie nawet strach analizować, ale:


  1. preg_match('/^<div id=\"PeopleOnline\"><p class=\"top\"><span>[0-9,]<\/span>$/', $strona, $wyjscie);
  2. print_r($wyjscie[2]);
nospor
Czemu cydzusłowia poprzedzasz \ ? Przecież to nie ma tutaj żadnego sensu... wręcz przeciwnie, powoduje błąd.

zaś liczb może być więcej a nie tylko jedna. zapomniałes o * lub +
wujeke
  1. preg_match('/^<div id="PeopleOnline"><p class="top"><span>[0-9,]+<\/span>$/', $strona, $wyjscie);


niestety, nie działa


czy białe znaki mają znaczenie? w orginale to wygląda jednak tak:

  1. <div id="PeopleOnline">
  2. <p class="top">
  3. <span>112,556</span>
  4. people currently online
  5. </p>

nospor
No tak, białe znaki to znaki jak każde inne

Poza tym w wyrazeniu okresliles początek i koniec... mamy rozumieć, że twoj tekst składa sie dokladnie z ciągu którego szukasz? Nie ma nic wcześniej ani później?
zegarek84
Cytat(wujeke @ 14.04.2013, 17:41:40 ) *
Witam i kurcze, znowu mam ten sam problem....

skoro próbujesz parsować strony to nie tędy droga... fakt, możesz tak douczyć się wyrażeń regularnych ale nie tędy droga...
masz na szybko rozwiązanie bez wyr. reg.
  1. <?php
  2. error_reporting(E_ALL | E_STRICT);
  3. ini_set('display_errors', '1');
  4.  
  5. $oDOM = new DOMDocument('1.0', 'UTF-8');
  6. $sHTML =
  7. '<div id="PeopleOnline">
  8. <p class="top">
  9. <span>112,556</span>
  10. people currently online
  11. </p>';
  12. @$oDOM->loadHTML($sHTML);
  13. $oXPath = new DOMXPath($oDOM);
  14. $oSpan = $oXPath->query('//div[@id="PeopleOnline"][1]/p[1]/span[1]')->item(0); /* @var $oSpan DOMNode */
  15. unset($oXPath);
  16. $sOnline = '0';
  17. if ($oSpan) {
  18. $sOnline = trim($oSpan->nodeValue);
  19. }
  20. echo $sOnline;

i przeczytaj temat od deski do deski gdyż tam różne źródła podawałem i wcale z XPath nie musisz korzystać a nawet możesz tylko z selektorów CSS - ale sam sobie poszukaj...
[xml][DOM] sama podstawa

z kolei w JAVA polecam "jsoup" a w C++ framwork Qt i zawarty w nim silnik przeglądarki WebKit...
wjujeke
SUPER! DZIĘKUJĘ biggrin.gif!
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.