Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrażenie regularne - linki pod sobą
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Mam taki kod:
  1. $m="http://test.pl\nhttp://test.pl\nhttp://test.pl\nhttp://test.pl";
  2. $search = array (
  3. '#([^/]|^)(www\..*?\..*?)(\s|$)#si',
  4. '#([^">]|^)(https?://.*?\..*?)(\s|$)#si'
  5. );
  6. $replace = array(
  7. '\\1<a href="http://\\2">\\2</a>\\3',
  8. '\\1<a href="\\2">\\2</a>\\3'
  9. );
  10. $m = preg_replace($search, $replace, $m);
  11. $m = nl2br($m);
  12. echo $m;

Jego zadaniem jest zamiant tekstów linkowych na pełne linki w kodzie html. Jednak gdy teksty linkowe oddzielone są od siebie \n to na linki zamienia mi co drugi link tekstowy. Gdyby były oddzielone \r\n tp by zamieniał wszystkie na linki.
W czym problem? Nie chcę tego obchodzić na zasadzie podmianiania \n na \r\n. Chciałbym to załatwić przez właściwe wyrażenie regularne.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Hmmmm, jest tutaj jakiś szczególny haczyk ? Nie jestem zbyt mocny w wyr. regularnych ale to wydaje mi się dosyć proste.
Można by na przykład tak ? :
  1. $m="http://test.pl\nhttps://test.pl\nhttp://test.pl\nhttp://test.pl\nhttps://test.com\nhttp://test.pl";
  2. $wynik = preg_replace("#(https?://|www.)(.*)([\n]|)#i","<a href=\"$1$2\">$2</a>\n",$m);
  3. $wynik = nl2br($wynik);
  4. var_dump ($wynik);
  5. echo $wynik;


Oczywiście popraw mnie jeżeli piszę kompletne głupoty, ot tylko taki mój mały pomysł. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kukix
post
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Cytat(Uriziel01 @ 27.01.2012, 19:24:01 ) *
Hmmmm, jest tutaj jakiś szczególny haczyk ? Nie jestem zbyt mocny w wyr. regularnych ale to wydaje mi się dosyć proste.
Można by na przykład tak ? :



Spróbuj sobie na przykładzie adresu bez http:// taki odnosnik źle działa.. trzeba wtedy dokleić http://

Ten post edytował kukix 27.01.2012, 21:53:17
Go to the top of the page
+Quote Post
Uriziel01
post
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Cytat(kukix @ 27.01.2012, 21:51:20 ) *
Spróbuj sobie na przykładzie adresu bez http:// taki odnosnik źle działa.. trzeba wtedy dokleić http://

Hmmm, a jak mając samo test.pl masz zamiar powiedzeć że to linka ? Przecież mogę napisać w poście 'słowo.Tak więc' całkowicie przypadkowo nie chcąc aby zostało to zamienione na jakikolwiek link w stylu <a href="http://slowo.tak">/slowo.tak</a>, tak więc bez http,https,ftp,www nie jest to adres a jedynie zwykła fraza.
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: 11.10.2025 - 21:07