![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 24.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie.
Otóż chciałbym zrobić sobie wyrażenie regularne wychwytujące wszystkie łącza (hrefy), ponieważ chce sprawdzac jakie łącza dają użytkownicy w komentarzach na mojej stronie i dodawać je do bazy, robiłem już ileś matchów jednak im bardziej starałem się poprawić, tym bardziej go niszczyłem i już kompletnie zaczął mi się mózg lansować. $preg = preg_match_all('/<a.*href\s*=(?:\s*|\s*"|\s*\')([^\s>]+)(?:\s*?"|\s*?\'|\s*|\s*>)/i', $text, $url_list, PREG_PATTERN_ORDER); Proszę o pomoc. // EDIT do moderatorow, musiałem usunąć BBCode, ponieważ forum mi docinało regexa jakieś pomysły? Ten post edytował no-scared 31.08.2008, 16:06:16 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 3.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
mózg może się lasować.. lansują się gwiazdy w telewizji
Ten post edytował em1X 31.08.2008, 22:33:28 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 24.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
mózg może się lasować.. lansują się gwiazdy w telewizji
em1X mialem podobnego regexa na samym początku, jednak co jeśli łącza będą takie: <a href='costam'>łącze</a> <a href=costam>łącze</a> |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
możesz zrobić trzy oddzielne wyrażenia dla każdego przypadku.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 6 Dołączył: 30.06.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
em1X: ale po co dla każdego przypadku osobno?
to rozwala linki z pojedynczymi i podwójnymi "uszami" i te bez też Ten post edytował delfinium 2.09.2008, 12:14:21 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
jeden kij, btw Twój regexp nie złapałby linka w postaci: <a href=http://onet.pl title="cos"> więc małą modyfikację wypadałoby dodać
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 6 Dołączył: 30.06.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
faktycznie, z rozpędu zabrakło jednego .*?. dzięki za poprawkę
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 24.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
jeszcze mały problem, bo już chce rozdać plusy, ale żeby do końca (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
regex em1X wyłapuje także takie przypadki: http://php.sum1.pl/?kat=9&p=7" onFocus=blur(); class=link nie wiem dokladnie czemu, bo na koncu linka jest cudzyslow a on pobiera dalej. Próbowałem coś takiego: '/<a.*?href=(?:\'|"|)(^"\'\s)*?(?:\'|"|)>.*?<\/a>/i' ale mi wtedy nic nie pobiera... Ten post edytował no-scared 2.09.2008, 14:36:54 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Wrzucałem już tu kiedyś podobne wyrażenie. Powinno łapać wszystkie adresy:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 21:35 |