Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z weryfikacją (wyrażenia regularne)
Fred1485
post 10.02.2015, 16:38:16
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Mam dwa proste bbcode na url: pierwszy to:

  1. $text = preg_replace('#\[url\=(.*?)\](.*?)\[\/url\]#', '<a href=\1>\2</a>', $text);


drugi to:

  1. $text = preg_replace('#((http|https|ftp|ftps)[\w\#$%&~/.\-;:=,?@\(\)]*)#si', '<a href=\1>\1</a>', $text);


Oba kody działają wyśmienicie ALE osobno niestety bo jak pewna część osób już zauważyła gdy chcę aby działały te dwa skrypty to się wzajemnie wykluczają, tj

Jeśli wkleję jakiś link to skrypt nr dwa przekształca go na link ale, jeśli w [url ][ /url] dam jakiś link to oba wyrażenia regularne do niego niestety pasują i w efekcie wychodzi kicha :\ np daję link [url ]http://www.google.pl[ /url] to pierwszy skrypt przekształci go w <a href=http://www.google.pl>http://www.google.pl</a> ale po nim drugie wyrażenie regularne zamieni dalej ten kod na <a href=<a href=>http://www.google.pl</a>><a href=>http://www.google.pl</a></a>

I się wszystko miesza :\

Myślałem nad tym żeby sprawdzić czy został użyty [url] ale to i tak nic nie da na dobrą sprawę...


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
b4rt3kk
post 10.02.2015, 16:50:18
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Proponuję do drugiego wyrażenia dodać spację (przed lub po linku) i to powinno załatwić sprawę. Chyba że chcesz na linki przekształcać również text typu:

Cytat
bla bla bla link do googlehttp://google.pl


Jeśli nie to wyrażenie może wyglądać tak:

  1. $text = preg_replace('#\s((http|https|ftp|ftps)[\w\#$%&~/.\-;:=,?@\(\)]*)\s#si', '<a href=\1>\1</a>', $text);


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Fred1485
post 10.02.2015, 16:59:41
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No teoretycznie to by sprawę rozwiązało ale tylko połowicznie, dajmy na to że chcę wysłać wiadomość tylko z linkiem więc do textarea wklejam http://www.google.pl/
ale linku z tego absolutnie nie zrobi bo żadnych spacji nie dajemy...Ten problem na bank da się jakoś rozwiązać ale trzeba jeszcze pomyśleć biggrin.gif

Ten post edytował Fred1485 10.02.2015, 17:00:20


--------------------
  1. echo 'I was trying';
  2. die ();
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:46