Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobieranie adresa URL, wyrażenia warunkowe
Forum PHP.pl > Forum > Przedszkole
warszyk
Witam,
mam takie pytanie, gdyż walczę z jedną procedurą już z 1h i nie mogę (zaznaczam, że to nie jest spam ani tworzenie bota). Mam stronę, z której chcę pobrać wszystkie adresy URL zaczynają się tylko na http://
Na stronie http://regexp.pl/ procedura
  1. #http://([-/a-zA-Z0-9.?&]+)#
działa dobrze, ale jakoś tutaj nie może. Wyświetla mi 3 adresy www.w3.. i koniec tablicy, a jak zamiast tego wyrażenia regularnego wpisze konkretny adres URL to go rozpozna.

Przepraszam, że adres rozjechał całą stronkę, ale jest to przykład.

  1. $uchwyt = fopen("http://shop-list.com.ua/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D1%8B,%20%D0%BD%D0%BE%D1%83%D1%82%D0%B1%D1%83%D0%BA%D0%B8,%20%D0%BD%D0%B5%D1%82%D0%B1%D1%83%D0%BA%D0%B8,%20%D0%9A%D0%9F%D0%9A/s5p0.html", "rb");
  2.  
  3. $tresc = '';
  4. $tresc1 = '';
  5.  
  6. while (!feof($uchwyt)) {
  7. $tresc .= fread($uchwyt,8120);
  8. }
  9. if(preg_match( '#http://([-/a-zA-Z0-9.?&]+)#' , $tresc, $tresc1))
  10. {
  11. echo (" ok ");
  12. }
  13. else
  14. echo ("nie");
  15.  
  16. foreach ( $tresc1 as &zm )
  17. {
  18. echo ("$zm");
  19. }
  20.  
  21. //echo ("$tresc");
  22.  
  23.  
  24. fclose($uchwyt);
blahy
  1. foreach ( $tresc1 as &zm )

?

poprawione:
  1. $uchwyt = fopen("http://shop-list.com.ua/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D1%8B,%20%D0%BD%D0%BE%D1%83%D1%82%D0%B1%D1%83%D0%BA%D0%B8,%20%D0%BD%D0%B5%D1%82%D0%B1%D1%83%D0%BA%D0%B8,%20%D0%9A%D0%9F%D0%9A/s5p0.html", "rb");
  2.  
  3. $tresc = '';
  4. $tresc1 = '';
  5.  
  6. while (!feof($uchwyt)) {
  7. $tresc .= fread($uchwyt,8120);
  8. }
  9. if(preg_match_all( '#http://([-/a-zA-Z0-9.?&]+)#' , $tresc, &$tresc1)) //preg_match_all
  10. {
  11. echo (" ok ");
  12. }
  13. else
  14. echo ("nie");
  15.  
  16. foreach ( $tresc1[0] as $zm ) //literowka
  17. {
  18. echo ("$zm<br>");
  19. }
  20.  
  21. fclose($uchwyt);
monami
Hej, chce zeby wyrazenie skladalo sie z dowolnych znakow oprocz polskich ęążź itd.
Jak mam cos takiego to jest ok
Kod
preg_match_all( '#^([a-zA-Z0-9_-]*)$#' , $wyr, $out)

albo
Kod
preg_match( '#^([a-zA-Z0-9_-]*)$#' , $wyr)

Z tym, ze nie moge dodac znakow specjalnych takich jak / \ ? ^ itd.
Jak zmienie na cos takiego:
Kod
preg_match_all( '#^([a-zA-Z0-9_-?$%.,]*)$#' , $wyr, $out)

(tak samo preg_match)
to wyskakuje blad:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: range out of order in character class at offset 14 in /www/plik.php on line 8
W przykladzie @blahy tez mi wyskakuje ten blad.
Czy ktos sie z czyms takim spotkał?
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.