Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak wykryć url w tekście
Forum PHP.pl > Forum > PHP
BugsBunny
Witam.

Mam problem z wykryciem w tekście adresów URL i ich podmianę.

Chyba preg_match i preg_replace tutaj nic nie pomoże bo nie chcę zamieniać linka tylko go znaleźć w całości do jakiejśc zmiennej np

  1. $data = 'jakiś tam tekst www.forum.php.pl znowu jakiś tekst';


a pożądany efekt to:
  1. $data = 'jakiś tam tekst <a href="www.forum.php.pl" target="_blank">www.forum.php.pl</a> znowu jakiś tekst';

shark121
  1. <?php
  2. $string = "www.cos.pl";
  3. $string = preg_replace('|(?<!href=")(www.?[A-Za-z0-9+\-=._/*(),@\'$:;&!?%]+)|i', '<a href="$1">$1</a>', $string);
  4. echo $string;
  5. ?>
BugsBunny
o mniej wiecej coś takiego mi chodziło z tym, że link musi mieć zawsze http:// lub https:// na początku

Istnieje jakiś sposób by wyciągnąć $1 na zewnątrz np do jakiejś tablicy, a następnie str_replace podmienić string?

Jeżeli napiszę oddzielnie wyrażenie dla wersji z http i potem po przerobionych danych przetworzę jeszcze raz to sie zrobią podwójne linki.

Ew. Jak wymusić żeby przed www. byla spacja tabulator lub znak nowej linii ?

  1. $string = preg_replace('|(?<!href=")([\s\t\n]+www.?[A-Za-z0-9+\-=._/*(),@\'$:;&!?%]+)|i', '<a href="http://$1" target="_blank">$1</a>', $string);

taka wersja nie działa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.