Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Wyrażenia regularne] Wyciąganie linków, ... coś nie tak z wyrażeniem..
Babcia@Stefa
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Witam, skonstruowałem wyrażenie, ale nie działa ono tak jak bym chciał..

  1. <?php
  2. preg_match_all( '|example.com([^ ]+).html|' , $this->PageContent , $Matches );
  3. ?>


Chciałbym ale nie wiem jak dać opcję że zamiast example.com może być także:
- drugastrona.com
- trzeciastrona.com

A zamiast .html także:
- .php
- .php5
- .gz

Próbowałem zamienić example.com z (example.com|drugastrona.com|trzeciastrona.com) ale PHP wypluwa komunikat:

Cytat
Unknown modifier 'd'


A innym problemem jest że zwracane wyniki są np. takie:
[0] => example.com/numbers.php
[1] => example.com/one.php example.com/two.php example.com/three

Pytania:
- Jak poprawić to wyrażenie abym mógł dodać np. drugastrona.com oraz trzeciastrona.com?
- Czy można coś zmienić w tym wyrażeniu, aby zwracało po jednym linku do każdego elementu tablicy?

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 18.03.2009, 16:15:11


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


tak jak to próbowałeś zrobić ale całe wyrażenie obejmij nie znakiem | a znakiem /

i jeśli ma szukać jeszcze kropkę to poprzedź ją znakiem \ (poczytaj o znakach specjalnych

każdy nawias jest zapamiętywany jako dodatkowa zmienna - tam gdzie nie ma być zapamiętywany dodatkowy parametr urzywaj (?:wyrażenie)


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


1. Działa
2. Nadal zwraca mi pare linków naraz...

Jak zmienić to wyrażenie aby wrzucało tylko po jednym linku do tablicy?

Teraz to tak wygląda, ale zwraca po kilka linków w jednym elemencie tablicy...

  1. <?php
  2. preg_match_all('/(jeden.com|dwa.com|example.com)([^ ]+).(html|pdf|doc)/', $this->PageContent, $Matches);
  3. ?>


Ten post edytował Babcia@Stefa 18.03.2009, 18:18:25


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Kod
preg_match_all('/(?:(?:jeden|dwa|example)\.com)(?:[^ ]+?(?:html|pdf|doc))?/i', $this->PageContent, $Matches);

sprawdź, podaj też przykładowy fragment źródła strony jeśli to nie działa....

Ten post edytował zegarek84 18.03.2009, 19:31:49


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Cytat(zegarek84 @ 18.03.2009, 19:19:25 ) *
Kod
preg_match_all('/(?:(?:jeden|dwa|example)\.com)(?:[^ ]+?(?:html|pdf|doc))?/i', $this->PageContent, $Matches);

sprawdź, podaj też przykładowy fragment źródła strony jeśli to nie działa....


Cytat(PHP Parser)
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 16 bytes)


Coś za dużo pamięci zużywają te wyrażenia regularne blinksmiley.gif


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
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 Aktualny czas: 19.08.2025 - 18:32