Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] cURL i explode
markez07
post 22.07.2011, 10:24:21
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Witam,

wczoraj długo kombinowałem i nic. Chcę wyciąć załóżmy ze strony wp.pl z diva bxWiadomosci poszczególne tytuły artykułów np. "Rosjanie pozmieniali zeznania?" Jak to zrobić?

  1. <li><a title="Rosjanie pozmieniali zeznania?" href="http://wiadomosci.wp.pl/kat,1342,title,Rosjanie-pozmieniali-zeznania,wid,13619589,wiadomosc.html">Rosjanie pozmieniali zeznania?</a></li>



Pobieram stronę:

  1. <?php
  2. $homepage = file_get_contents('http://www.wp.pl/');
  3. ?>



a dalej nie mam pojęcia, bo w sieci znalazłem jedynie coś tego typu. Jak to zastosować by wyciąć część strony i wyświetlić?


  1. <?php
  2. $nauka = "jeden+dwa+trzy+cztery";
  3.  
  4. $a = explode("+", $nauka);
  5. echo "wszystkie = $nauka <br/>";
  6. echo "1 = $a[0]<br/>";
  7. echo "2 = $a[1]<br/>";
  8. echo "3 = $a[2]<br/>";
  9. echo "4 = $a[3]";
  10. ?>


pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Piogola
post 22.07.2011, 10:26:04
Post #2





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


Użyj wyrażeń regularnych


--------------------
Google Manual
Go to the top of the page
+Quote Post
markez07
post 22.07.2011, 10:49:54
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Chciałbym nauczyć się jak to wykonać za pomocą explode.
Go to the top of the page
+Quote Post
erix
post 22.07.2011, 11:20:55
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie da się, a jak już, to tak to pokomplikujesz, że zajeździsz albo siebie, albo procesor, albo pamięć.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
markez07
post 22.07.2011, 13:06:54
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Podsuniecie jakiś artykuł czy też kurs w którym jest jasno opisane jak wykorzystać do tego wyrażenia regularne?

e:

Znalazłem w necie coś takiego:

  1. <?php
  2. $tekst = file_get_contents("http://www.armia.toproste.pl/statystyki/7.6/");
  3.  
  4. preg_match_all('/html" target="_blank">([A-Za-z ]*)<\/a><\/td>/', $tekst, $nick);
  5.  
  6. preg_match_all('/<\/a><\/td>\s*<td class="textright">([\d]*).<\/td>/i', $tekst, $lvl);
  7. for($i=0; $i<200; $i++){
  8. echo $nick[1][$i]." | ".$lvl[0][$i]."<br />";
  9. }
  10. ?>


Wkleiłem sobie żeby sprawdzić i działa. Wyciąga z tamtej strony dane. Problem w tym, że nie rozumiem tego... Nie wiem o co chodzi z tymi znakami - ukośniki, A-Za-z itp. Jak tym wskazuje co ma wyciąć?

Ten post edytował markez07 22.07.2011, 14:42:46
Go to the top of the page
+Quote Post
Piogola
post 22.07.2011, 15:58:57
Post #6





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


Wpisz w wyszukiwarkę google frazy "wyrażenia regularne" i masz setki wyników z kursami


--------------------
Google Manual
Go to the top of the page
+Quote Post
Crozin
post 22.07.2011, 16:05:22
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wyrażenia regularne nie nadają się do parsowania HTML-a. Użyj DOMDocument.
Go to the top of the page
+Quote Post
markez07
post 22.07.2011, 20:48:57
Post #8





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Widzę, że każdy coś innego pisze. Jedni, że explode, drudzy wyrażenia regularne, a trzeci jeszcze coś innego. smile.gif

Znalazłem jakiś artykuł:

  1. http://wyrazeniaregularne.wordpress.com/


ale nadal nie wiem jak pobrać ze strony część która mnie interesuje.
Jeżeli da się to proszę to jakoś "łopatologiczniej" mi wytłumaczyć, bo chciałbym się tego nauczyć.
Go to the top of the page
+Quote Post
lobopol
post 23.07.2011, 07:38:24
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Polecam do nauki http://regex.larsolavtorvik.com/


--------------------
Go to the top of the page
+Quote Post
erix
post 23.07.2011, 09:31:20
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Albo phpQuery. Wszystko wyciągniesz selektorami CSS, jak w jQuery.

DOMDocument lubi się sypać przy niepoprawnej składni.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
markez07
post 23.07.2011, 12:14:26
Post #11





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Cytat
'zwyczajne' czyli takie jak np.: 'a', 'd', '4', 's' i znaki
'niezwyczajne' - '^', '$', '*', '+', '?', '.', '(', ')', '[', ']', '{', '}', '\\',


Moja mózgownica nie pojmuje jak za pomocą tych znaków wskazać konkretny element. Patrząc na inne strony wiem co dany symbol oznacza, ale nie potrafię ogarnąć jak nimi coś wskazać, jakiegoś diva czy wiersz. Ta tematyka chyba jest dość trudna...


erix co prostsze w zastosowaniu i wydajniejsze phpQuery czy wyrażenia regularne? Mile widziane tutoriale itp.

Ten post edytował markez07 23.07.2011, 12:15:02
Go to the top of the page
+Quote Post
lobopol
post 23.07.2011, 12:22:35
Post #12





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Prostsze phpquery, wydajniejsze zwykłe wyrażenia regularne. A prawda jest taka, że wyrażeń regularnych trzeba się samodzielnie nauczyć, ciężko jest je dokładnie wytłumaczyć.


--------------------
Go to the top of the page
+Quote Post
markez07
post 23.07.2011, 13:33:10
Post #13





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


  1.  
  2. preg_match_all('/html" target="_blank">([A-Za-z ]*)<\/a><\/td>/', $tekst, $nick);
  3.  
  4. preg_match_all('/<\/a><\/td>\s*<td class="textright">([\d]*).<\/td>/i', $tekst, $lvl);
  5.  


To po preg_match_all to czarna magia. W wierszu 4 chociaż widać class...

Cytat
Wyrażenia regularne cz 1

– 4:57 pm
Napisane w Regex
Komentarze są wyłączone

Składnia

zwyczajne znaki oznaczające wyłącznie siebie samego np. a, z, g, 1, 9, ! (nie mają żadnego innego znaczenia poza znaczeniem podstawowym)
znaki specjalne (metaznaki) mają specjalne znaczenie:
. dopasowanie dowolnego jednego znaku (łopatologicznie kropka oznacza dowolny jeden znak)
do wyrażenia a.a można dopasować aua, ala, ada
* dopasowanie zera lub większej liczby elementów poprzedzających
do wyrażenia w*akacje można dopasować akacje, wakacje, wwwwakacje
+ dopasowanie co najmniej jednego poprzedzającego elementu (łopatologicznie 1 lub więcej razy)
do wyrażenia nu+da można dopasować nuda, nuuda, nuuuuuuuuuda
? dopasowanie zera lub jednego poprzedzającego elementu
(łopatologicznie element poprzedzający może ale nie musi wystąpić)
do wyrażenie a?a można dopasować aa, a
() zapamiętanie zawartości nawiasu jako elementu
wyrażenie mieszkam na ulicy (Wesołej)
takie wyrażenie zapamięta wartość w nawiasie czyli Wesołej
[] dopasowanie jednego elementu z listy, wszystkie elementy listy muszą znaleźć się pomiędzy [ i ]. Uwaga! Pamiętaj, że każdy znak pomiędzy [] traktowany jest jako pojedynczy znak.
do wyrażenia [abcd]+ dopasujemy a, c, ab, acd, dac
- tworzenie zakresu w liście czyli tylko pomiędzy []
do wyrażenia [a-p] dopasujemy dowolną literę z przedziału a-p
| oznacza lub czyli alternatywę
do wyrażenia Kopernik był (kobietą|mężczyzną) dopasujemy zarówno Kopernik był kobietą jak i Kopernik był mężczyzną
^ dopasowanie do początku pola ( łopatologicznie znak następujący po ^ musi być początkiem wyrażenie w którym dokonywujemy dopasowania)
do wyrażenia ^Ala
dopasujemy Ala ma kota ale już nie dopasujemy Kot ma Ale
^ stosujemy także razem z [] w liście do wyrażenia negacji
do wyrażenia [^a]+ dopasujemy jakiekolwiek słowo które nie zawiera litery a np. kret, pies
$ dopasowanie do końca pola( łopatologicznie znak poprzedzający $ musi być końcem wyrażenie w którym dokonywujemy dopasowania)
do wyrażenia Ale$ dopasujemy zdanie Kot ma Ale ale nie dopasuje już Ale gorąco
\ oznacza anulowanie znaczenia wszystkich powyższych symboli (łopatologicznie wszystkie specjalne znaki po poprzedzeniu ich \ „tracą moc” i odzyskują podstawowe znaczenie)
\. lub \+
oznaczają tylko i wyłącznie kropkę i plus

Symbole formatujące tekst

\e oznacza escape
\n oznacza nową linię
\r oznacza powrót karetki
\t oznacza tabulację
\a oznacza alarm

Wbudowane klasy znaków( występują w parach \mała litera \duża litera, gdzie mała litera np \d (skrót od digit) to dowolna cyfra, a duża litera np \D dowolny znak nie będący \d czyli dowolny znak nie będący cyfrą)

\d dowolna cyfra
\D dowolny znak nie będący cyfrą
\s dowolny biały znak (np spacja)
\S dowolny znak nie będący białym znakiem
\w dowolny znak należący do słowa(cyfry, litery i znak _)
\W dowolny znak nie należący do słowa

Pozostałe klasy znaków

[[:digit:]] dowolny znak będący cyfrą
[[:alpha:]] dowolny znak będący literą
[[:alnum:]] dowolny znak będący literą lub cyfrą
[[:lower:]] dowolny znak będący małą literą
[[:upper:]] dowolny znak będący dużą literą
[[:punct:]] dowolny znak interpunkcyjny
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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:38