Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg_match_all i usunięcie wyników
Forum PHP.pl > Forum > Przedszkole
PawelC
Hej mam takie wyrażenie regularne:
Kod
/(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i

Którego zadaniem jest wyszukiwanie linków, i wszystko ładnie pięknie działa, z tym że znajduje również adresy których nie chcę w tym np:
Cytat

I moje pytanie brzmi jak przekształcić to wyrażenie tak aby znajdowało podstrony, ale pomijało linki do obrazków, styli css itp oraz jak zrobić aby znajdywało same domeny i subdomeny bez podstron np
Cytat
wookieb
Tak to jest jak sie korzysta z gotowych wyrażeń...
  1. <?php
  2. $str='
  3. <a href=\"http://www.exploit-media.eu/wp-content/the.../css/screen.css\" target=\"_blank\">http://www.exploit-media.eu/wp-content/the.../css/screen.css</a>
  4.  
  5. <a href=\"http://www.adres-strony.pl/\" target=\"_blank\">http://www.adres-strony.pl/</a>
  6. ';
  7. preg_match_all('/(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|][^(css|jpg)]$/i', $str, $matches);
  8.  
  9.  
  10. print_r($matches);
  11. ?>


Znajdź różnica i dopisz potrzebne ci rozszerzenia albo sprytnie zmodyfikuj.
PawelC
Przy zastosowaniu i sprawdzeniu Twojego kodu tak jak podałeś w wynikach dostaje:
Kod
Fatal error:  Maximum execution time of 30 seconds exceeded in C:\wamp\www\index.php on line 17

albo
Kod
Array (     [0] => Array         (         )  )
wookieb
Wybacz... nie zauważyłem ze forum sknociło kod.

Kod
$str='
http://www.exploit-media.eu/wp-content/the.../css/screen.css

http://www.adres-strony.pl/
';
preg_match_all('/(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|][^(css|jpg)]$/i', $str, $matches);


print_r($matches);
PawelC
Zrobiłem coś takiego:
Kod
<?php
$str='
<a href="http://www.exploit-media.eu/wp-content/the.../css/screen.css" target="_blank">http://www.exploit-media.eu/wp-content/the.../css/screen.css</a>

<a href="http://www.adres-strony.pl/" target="_blank">http://www.adres-strony.pl/</a>
<a href="http://www.adres.pl/" target="_blank">http://www.adres.pl/</a>
<a href="http://www.sub.adres-strony.pl/" target="_blank">http://www.sub.adres-strony.pl/</a>
';
preg_match_all('/(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|][^(css|jpg|gif|png|bmp)]$/i', $str, $matches);


print_r($matches);
?>

I Wyłapuje tylko ostatni adres, a resztę pomija tak jakby nie pasowały do wzorca
wookieb
Udało mi się uzyskać coś takiego
Kod
$str='
http://www.exploit-media.eu/wp-content/the.../css/screen.css
http://www.adres-strony.pl/
http://www.adres.pl/
http://www.sub.adres-strony.pl/
';
preg_match_all('/(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*?\/[^-a-z0-9+&@#\/%?=~_|!:,.;]/i', $str, $matches);


print_r($matches);
PawelC
Teraz działa super smile.gif Dzięki za pomoc guitar.gif
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.