Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Preg_match
vegeta
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


  1. preg_match_all("/<a(?:[^>]*)href=\"(http:\/\/[^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);


Co mam zrobić, aby wypluwało mi tylko linki do stron głównych? Chodzi mi o to, aby nie wypluwało wyników, które mają kilka / po głównym adresie. Chcę, żeby wyświetlało mi tylko wyniki z jednym / i bez niego np. http://onet.pl i http://onet.pl/, ale nie dawało już http://onet.pl/dzieci_neo albo http://onet.pl/dzieci_neo/blaaa/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
amii
post
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Można to zrobić w ten sposób na ciągach znaków:

  1. $ciag = array();
  2. foreach ($matches as $value) {
  3. $pozycja = strpos($value[1], '/', 7); //zwraca pierwsze wyrażenie w nawiasach, 7 bo pomijamy http://
  4. $ciag[] = substr($value[1], 0, $pozycja);
  5. }
Go to the top of the page
+Quote Post
vegeta
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


Wolałbym jednak zrobić to na samych preg_matchach jak się da.

Oto mój cały kod:

  1. <?php
  2. $original_file = file_get_contents("http://it-maniak.pl/");
  3. $stripped_file = strip_tags($original_file, "<a>");
  4. preg_match_all("/<a(?:[^>]*)href=\"(http:\/\/[^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);
  5.  
  6. header("Content-type: text/plain");
  7. print_r($matches);
  8. ?>
Go to the top of the page
+Quote Post
Piogola
post
Post #4





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

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


  1. <?php
  2. $original_file = file_get_contents("http://it-maniak.pl/");
  3. $stripped_file = strip_tags($original_file, "<a>");
  4. preg_match_all('#href="(http://[^/]+/)"#is', $stripped_file, $matches);
  5.  
  6. header("Content-type: text/plain");
  7. print_r($matches);
  8. ?>


Kod
Array
(
    [0] => Array
        (

        )    
[1] => Array
        (
            [0] => http://forum.it-maniak.pl/
            [1] => http://debnix.compu.boo.pl/
            [2] => http://forum.it-maniak.pl/
            [3] => http://grajek.it-maniak.pl/
            [4] => http://tcn.cba.pl/
            [5] => http://potterwarta.info/
            [6] => http://evilus.wordpress.com/
            [7] => http://kurshtml.boo.pl/
            [8] => http://mikonews.tk/
            [9] => http://wordpress.org/
            [10] => http://wordpress.org/
        )


)


Ten post edytował Piogola 2.02.2011, 19:40:47
Go to the top of the page
+Quote Post
vegeta
post
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


Ok, dzięki, ale teraz nie dodaje linków, które nie mają / na końcu np. http://zww.me, który jest w stopce.

I jeszcze jedno. Chcę, aby moja tablica nie zawierała dwóch identycznych wyników tak jak w przypadku skanowania onet.pl link http://poczta.onet.pl/
(5 i 6)

//Poradziłem sobie

Ten post edytował vegeta 2.02.2011, 20:02:29
Go to the top of the page
+Quote Post
Piogola
post
Post #6





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

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


Kod
#href="(http://[^/"]+[/]?)"#is
Go to the top of the page
+Quote Post
vegeta
post
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 9.11.2008

Ostrzeżenie: (10%)
X----


Kolejny problem. Chcę wyświetlić tablice:

  1. <?php
  2. $original_file = file_get_contents("http://it-maniak.pl/");
  3. $stripped_file = strip_tags($original_file, "<a>");
  4. preg_match_all('#href="(http://[^/"]+[/]?)"#is', $stripped_file, $matches);
  5.  
  6. $unikat = array_unique($matches[1]);
  7.  
  8. foreach ($unikat as $link)
  9. {
  10. for ($i = 0; $i < count($link); $i++)
  11. {
  12. echo $link[$i] . '<br />';
  13. }
  14. }
  15. ?>


Wyświetlają mi się tylko h, a jak zmienie w 6 linijce na $matches to pojawiają mi się tylko te 'linki' z czystego preg_match
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:43