Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php] Wyrazenia regularne

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php] Wyrazenia regularne

Post 09.01.2012, 00:36:42

Witam

Mam pytanko odnosnie filtrowania wyniku dzialania curl. Czy mozna jakosc filtrowac wynik ktory zostaje wywolany za pomoca :

Kod: Zaznacz cały
curl_exec($ch)


Chodzi mi o wyciaganie kontretnych danych np adresu www na wyswietlonej stronie.

Zrobilem cos takiego :

Kod: Zaznacz cały
    $html = curl_exec($ch);
    curl_close($ch);
     
    preg_match_all('#<title>(.*)<title>#sUi', $html, $text, PREG_PATTERN_ORDER);
    echo $text[1][0];


Wywala mi blad :(

Kod: Zaznacz cały
Notice: Undefined offset: 0 in


Prosze o pomoc.
Cheatgames.pl - Kody do gier,Poradniki,Patche,Trainery,Save,Edytory
BusyBoy
Posty: 192
Dołączył(a): 04.12.2002

Re: [php] Wyrazenia regularne

Post 09.01.2012, 13:01:12

1. Zamiast cURL proponuję użyć file_get_contents - tak samo działa, a wymaga tylko 1 linijki kodu ;)
2. Do wyciągania metatagów z HTML-a proponowałbym raczej get_meta_tags
3. Jeśli jednak zostaniesz przy swoich wyrażeniach regularnych to:

1) Nie zamknąłeś tagu title
2) Używaj raczej .*? zamiast .*
3) Rezultat działania sprawdzaj w ten sposób:
Kod: Zaznacz cały
echo '<pre>';
print_r($text);


Pozdrawiam
BIMAS = BioInformatics and Molecular Analysis Section
Avatar użytkownikabimas
Maciej Bimek

Posty: 5974
Dołączył(a): 22.01.2005
Lokalizacja: Poznań

Re: [php] Wyrazenia regularne

Post 09.01.2012, 15:38:06

Dziekuje za pomoc, niestety bez zmian, kod wyglada teraz nastepujaco :
Kod: Zaznacz cały
<?php
$config['address'] = 'http://www.wp.pl';

$path['cookie'] = dirname(__FILE__).'/cookies.txt';

$ch = curl_init($config['address'].'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);

$html = curl_exec($ch);
curl_close($ch);

preg_match_all ('#<title>(.*?)</title>#', $html, $text, PREG_PATTERN_ORDER);
echo '<pre>';
print_r($text);
?>


Blad wyskakuje nastepujacy :

Kod: Zaznacz cały
Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
        )

)
Cheatgames.pl - Kody do gier,Poradniki,Patche,Trainery,Save,Edytory
BusyBoy
Posty: 192
Dołączył(a): 04.12.2002

Re: [php] Wyrazenia regularne

Post 09.01.2012, 15:44:26

Tym razem błędem jest usunięcie modyfikatorów - szczególnie modyfikatora "s", który powoduje, że ignorowane są znaki entera i nowej linii.
BIMAS = BioInformatics and Molecular Analysis Section
Avatar użytkownikabimas
Maciej Bimek

Posty: 5974
Dołączył(a): 22.01.2005
Lokalizacja: Poznań

Re: [php] Wyrazenia regularne

Post 09.01.2012, 16:07:33

Mogę prosić trochę jaśniej - jakiego modyfikatora ? dlaczego zmienna jest wyświetlona w formie tablicy ?

Jak wyświetlę zmienną $html mam wyświetloną wartość 1 - i nic wiecej a powinien być kod html strony.
Cheatgames.pl - Kody do gier,Poradniki,Patche,Trainery,Save,Edytory
BusyBoy
Posty: 192
Dołączył(a): 04.12.2002

Re: [php] Wyrazenia regularne

Post 09.01.2012, 16:18:51

BusyBoy napisał(a):Mogę prosić trochę jaśniej - jakiego modyfikatora ?
Modyfikatory występują zaraz za zamknięciem wyrażenia regularnego [w Twoim przypadku jest to drugi #] Poczytaj kurs wyrażeń regularnych BEnDI'ego - są tam podstawy wyrażeń regularnych.
dlaczego zmienna jest wyświetlona w formie tablicy ?
Bo rezultatem działania funkcji preg_match_all jest tablica
Jak wyświetlę zmienną $html mam wyświetloną wartość 1 - i nic wiecej a powinien być kod html strony.
Z Twojego kodu wynika, że nie chcesz by cURL zwracał kod:
Kod: Zaznacz cały
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
BIMAS = BioInformatics and Molecular Analysis Section
Avatar użytkownikabimas
Maciej Bimek

Posty: 5974
Dołączył(a): 22.01.2005
Lokalizacja: Poznań

Re: [php] Wyrazenia regularne

Post 09.01.2012, 20:15:24

Ok w sumie wszystko jest ogarnięte :D tylko jeszcze jedno pytanie - czy wynik z wyrażenia regularnego - może być wyświetlane w innym sposób niż w tablicy ?
Cheatgames.pl - Kody do gier,Poradniki,Patche,Trainery,Save,Edytory
BusyBoy
Posty: 192
Dołączył(a): 04.12.2002

Re: [php] Wyrazenia regularne

Post 09.01.2012, 20:17:59

BusyBoy napisał(a):czy wynik z wyrażenia regularnego - może być wyświetlane w innym sposób niż w tablicy ?
Nie

Pozdrawiam
BIMAS = BioInformatics and Molecular Analysis Section
Avatar użytkownikabimas
Maciej Bimek

Posty: 5974
Dołączył(a): 22.01.2005
Lokalizacja: Poznań


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Ahrefs [Bot] i 4 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50309 zarejestrowanych użytkowników.
Najnowszy użytkownik: arale


Nasi użytkownicy napisali:

  • 935438 wiadomości
  • w 246473 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)