Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wyrażenia regularne
-wujeke-
post
Post #1





Goście







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]);
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




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 +


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





Goście







  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>

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





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




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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...

Ten post edytował zegarek84 14.04.2013, 21:22:52


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
-wjujeke-
post
Post #6





Goście







SUPER! DZIĘKUJĘ biggrin.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: 20.08.2025 - 07:46