Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_replace a linki w tekście
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cześć,
Wyrażenia regularne nie są moją najmocniejszą stroną. Chcę aby podmieniało mi linki na klikalne linki. Innymi słowy aby wszystko pomiędzy stringami 'www.' , 'http://' oraz 'https://' aż do pierwszej napotkanej spacji albo znaku nowej linii, albo kropki po której jest spacja czy nowa linia było wrzucane w a href.
Zaadoptowałem taki oto kod.

  1. $url = '@(http(s)?)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
  2. $string = preg_replace($url, '<a href="http$2://$4" target="_blank" title="$0">$0</a>', $string);
  3. $row[3]=$string;*/

Wszystko pięknie oprócz tego że konwertuje każdy tekst przed kropką. Czyli strona.pl zostanie przekonwertowana. Fajnie, ale strona.strona też (IMG:style_emoticons/default/sad.gif)

Pomóżcie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LowiczakPL
post
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


po modfikacji , rozpoznaje wielki litery i przecinek usunięty z adresu

Kod
    $str = 'Jest strona WWW.domenA.pl,
    jest też http://domena.PL jest i http://www.Domena.pl,
    oraz jest inna: https://domena.pl, są pewnie też inne strony.';
    $regex = '/(.*?)(https?:\/\/(?:www\.|(?!www))[\w\d][\w\d-]+[\w\d]\.[^\s\,]{2,}|www\.[\w\d][\w\d-]+[\w\d]\.[^\s\,]{2,}|https?:\/\/(?:www\.|(?!www))[\w\d]+\.[^\s]{2,}|www\.[\w\d]+\.[^\s\,]{2,})/i';
    $regex2 = '/<a(.*?)href="(?!http:\/\/|https:\/\/)/';
    $str = preg_replace([$regex,$regex2], ['$1<a href="$2">$2</a>$3', '<a$1href="http://$2'], $str);
    echo $str;


Ten post edytował LowiczakPL 25.02.2021, 07:52:54
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: 26.12.2025 - 17:49