Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyrażenie regularne do łącz
no-scared
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





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:
  1. <?php
  2.  
  3. $text = 'aaa <a alt="aaa" href="http://aaa.pl/aaa.html" title="aaa">aaa</a> aaa
  4.  bbb <a alt='bbb' href='http://bbb.pl/bbb.html' title='bbb'>bbb</a> bbb
  5.  ccc <a alt=ccc href=http://ccc.pl/ccc.html title=ccc>ccc</a> ccc';
  6.  
  7.  
  8. preg_match_all( '#<as[^>]*hrefs*=s*("|')?(.*?)(?(1)1.*?>|(?:s.*?>|>))(.*?)</a>#si', $text, $matches );
  9.  
  10. echo '<pre>';
  11. print_r( $matches );
  12. echo '</pre>';
  13.  
  14. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 19:50