Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]problem regexp
jarmiar
post
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Witam

Napisałem sobie takiego regexpa, który ma wyciągać zawartśc podanego diva ze źródła strony

Kod
%<div id="text">(.*)</div>%


tylko pojawia się problem jak zawartośc tego diva oparta jest o kilka linni.
jeśłi zawartosc tego diva jest w jednej linii to działa elegancko

wie ktoś jak można zrobić, aby zawartośc diva była pobierana nawet wtedy kiedy jest on w kilku liniach??

Ten post edytował jarmiar 13.05.2008, 18:37:07


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Użyj modyfikatora s w wyrażeniu np
  1. <?php preg_match('%<div id="text">(.*)</div>%s', $foo); ?>

Tutaj znajdziesz reszte informacji smile.gif
Go to the top of the page
+Quote Post
jarmiar
post
Post #3





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


W dalszym ciągu nie działa


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
empathon
post
Post #4





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


A może by tak DOM ?


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(artega @ 13.05.2008, 20:22:53 ) *
Użyj modyfikatora s w wyrażeniu np
  1. <?php preg_match('%<div id="text">(.*)</div>%s', $foo); ?>

Tutaj znajdziesz reszte informacji smile.gif

Ja bym obstawiał modyfikator m
smile.gif
Go to the top of the page
+Quote Post
artega
post
Post #6





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Drobna literówka, poprawiłem
  1. <?php 
  2. preg_match('%<div id="text">(.*)</div>%s', $foo, $matches);
  3. // dla sprawdzenia
  4. var_dump($matches);
  5. ?>
Go to the top of the page
+Quote Post
jarmiar
post
Post #7





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Niestety w dalszym ciągu nie działa

var_dump wywala mi tylko (2) { [0]=> array(0) { } [1]=> array(0) { } }

to jest ten kawałek kodu który chce wyciągnąć


<div id="text">

jakiś tekst<br>
jakiś tekst<br>

coś <br>

cos2<br>


</div>


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
artega
post
Post #8





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


@jarmiar albo moje PHP jest "inne" albo Twoja przeglądarka używa cache
  1. <?php
  2.  
  3. $foo = <<<HEREDOC
  4. <div id="text">
  5.  
  6. jakis tekst<br>
  7. jakis tekst<br>
  8.  
  9. cos <br>
  10.  
  11. cos2<br>
  12.  
  13.  
  14. </div>
  15. HEREDOC;
  16.  
  17. preg_match('%<div id="text">(.*)</div>%s', $foo, $matches);
  18. // dla sprawdzenia
  19. var_dump($matches);
  20.  
  21. ?>

z tego wychodzi
Kod
array(2) {
  [0]=>
  string(77) "<div id="text">

jakis tekst<br>
jakis tekst<br>

cos <br>

cos2<br>


</div>"
  [1]=>
  string(56) "

jakis tekst<br>
jakis tekst<br>

cos <br>

cos2<br>


"
}
Go to the top of the page
+Quote Post
jarmiar
post
Post #9





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


Nie wiem dlaczego, ale w dalszym ciągu mi to nie działa.

Kod strony pobieram za pomocą file_get_contents()

z resztą zamieszczam kod

  1. <?php
  2. $adres = "http://foncard.pl/teksty/".$w."/".$t;
  3.  
  4. echo $adres;
  5.  
  6. $open = file_get_contents($adres);
  7.  
  8. preg_match('%<div id="text">(.*)</div>%s', $open, $wynik);
  9.  
  10. var_dump($wynik);
  11. ?>


proszę sprawdzić, co źle robię i mnie poprawić.


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
artega
post
Post #10





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Diabeł tkwi w szczegółach... zamiast text w źródle id to jest tekst
  1. <?php preg_match('%<div id="tekst">(.*)</div>%s', $open, $wynik); ?>
Go to the top of the page
+Quote Post
empathon
post
Post #11





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


@jarmiar: spójrz łaskawie na rozwiązanie które Ci podetknąłem pod nos. Jest dużo bardziej elastyczne niż regexp'y.


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
jarmiar
post
Post #12





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


artega, Twoje rozwiązanie działa, ale nie do konca dobrze

wyciąga mi zawartość, ale nie wyłącznie tego diva lecz tekstu znajdującego się po za nim również


EDIT.

Może mi ktoś podać jakiś przykład z tej biblioteki DOM ?

Ten post edytował jarmiar 14.05.2008, 18:16:42


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
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 - 03:38