Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match
Forum PHP.pl > Forum > PHP
Kruq
Zaczynam sie bawic wyrazeniami regularnymi i chce wyciagnac ze stronki kod zrodlowy ktory jest pomiedzy DIVami mam cos takiego :
  1.  
  2. $plik = file_get_contents('http://www.costam.pl/stronka.html');
  3.  
  4. preg_match('/<div class\=\"leftcolumn\"\>(.*)*\<\/div\>/',$plik, $znalezione);
  5.  
  6. echo $znalezione[0];
  7.  
  8. echo $znalezione[1];
  9.  


wynik :

Kod
Notice: Undefined offset: 0 in \test2.php on line 6

Notice: Undefined offset: 1 in \test2.php on line 10


jakies rady ?


Kruq
jezeli to ma naprawde znaczenie to podam , ale chyba nie wplywa na to jaki kod html jest wewnatrz DIVa ... standardowe tabele.

nie wiem jak to zapisac zeby wybrac zawartosc powmiedzy

<div class="leftcolumn"> kod HTML </div>

Jest to pewnie banalne rozwiazanie ale jak na poczatek przygod z wyrazeniami regularnymi to nie moge sobie poradzic sad.gif
Fifi209
#<div class="leftcolumn">(.*)</div>#i
Kruq
- > Undefined offset ..

Nie działa kolego sad.gif
Fifi209
SOA#1
Dziwne, u mnie działa.

  1. <?php
  2.  
  3. $tekst = '<div class="leftcolumn">a tutaj cos pisze</div>';
  4.  
  5. preg_match('#<div class="leftcolumn">(.*)</div>#', $tekst, $matches);
  6.  
  7. print_r($matches);
  8.  
  9. ?>

Kruq
Cytat(fifi209 @ 11.01.2010, 01:50:39 ) *
SOA#1
Dziwne, u mnie działa.

  1. <?php
  2.  
  3. $tekst = '<div class="leftcolumn">a tutaj cos pisze</div>';
  4.  
  5. preg_match('#<div class="leftcolumn">(.*)</div>#', $tekst, $matches);
  6.  
  7. print_r($matches);
  8.  
  9. ?>


No ten przykladzik tez mi dziala , ale jak pobieram stronke to juz nie dziala pomimo ze ten div jest taki sam ;/ nie czaje

Podam wszystko dokladnie moze cos mi sie kreci w glowce ;/
  1. <?php
  2. $plik = file_get_contents('http://www.polskikosz.pl/mecz/10416/zts_nowy_dwor_gdanski_vs_inter_parts_azs_uwm_olszt.html');
  3.  
  4. preg_match('#<div class="leftcolumn">(.*)</div>#',$plik, $znalezione);
  5.  
  6.  
  7. print_r ($znalezione);
  8.  
  9.  
  10. ?>


Nawet jak zrobie
  1.  
  2. preg_match('#<head>(.*)</head>#', $plik, $znalezione);

To wywala mi pusta tablice po print_r ... OCB questionmark.gif
Fifi209
bo są tam znaki nowych linii, w dodatku pierwsze zamknięcie diva jest zaraz na początku.

  1. <div class="leftcolumn">
  2. <div class="header-white-border-bottom">
  3. <h1>Mecz: ŻTS Nowy Dwór Gdański vs. Inter Parts AZS UWM Olsztyn (09.01.2010)</h1>
  4.  
  5. </div>


Ogólnie mały problemik. haha.gif
Kruq
Cytat(fifi209 @ 11.01.2010, 03:14:04 ) *
Ogólnie mały problemik. haha.gif


No to poległem ...
aart3k
Możesz to obejść odpowiednio zliczając ile jest otwieranych divów poza tamtym divem - explodujesz po "<div> zliczasz kawałki, aż wystąpi kawałek zawierający </div> - później na tej podstawie będziesz wiedział ile divów połączyć w jeden.

Trochę to zagmatwane, ale jak się zastanowisz, to osiągniesz to czego potrzebujesz winksmiley.jpg

Łatwiej jak jest coś charakterystycznego poza tym krańcowym divem, wtedy możesz to dołączyć do wyrażenia reg. na samym końcu.

PS. Nowe linie możesz wyciągać czymś takim: <div>(?<tekst>(.|\s)*)</div>







Mustava
A może wystarczy to:
  1. <?php
  2. $plik = file_get_contents('http://www.polskikosz.pl/mecz/10416/zts_nowy_dwor_gdanski_vs_inter_parts_azs_uwm_olszt.html');
  3.  
  4. preg_match_all('/<h1>(.*)<\/h1>/',$plik, $znalezione);
  5. $znalezione=$znalezione[1][0];
  6.  
  7. print_r ($znalezione);
  8. ?>
Kruq
no nie do konca , bo pobierasz tylko ze znacznikow <h1> a mi chodzi o cala zawartosc <div class="leftcolumn">,
tzn te tabelki co tam sa .. :Dwiec troszke kombinowania przedemna bo widze, ze nie ma za bardzo pomyslow biggrin.gif
Mustava
To może to Cię urządza:
  1. preg_match('/<div class\=\"leftcolumn\"\>(.*|\s)<\/div>+[\s]+<a href=\"http\:\/\/www\.jamel\.pl\/\"/s',$plik, $znalezione);
Kruq
no i elegancko ... wykorzystałem Twój pomysł, troszkę przerobiłem go i wyłuskałem ze strony to co mi potrzebne tzn dwie tabele ze statystykami z meczu :-)

Dzięki wielkie ...

Jeszcze jedno pytanko ... odnośnie [\s] co to robi biggrin.gif ?
Fifi209
Ciężko poszukać?
http://pl.php.net/manual/en/regexp.reference.backslash.php
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.