Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak wykryć url w tekście, i go przeedytować
BugsBunny
post
Post #1





Grupa: Zarejestrowani
Postów: 206
Pomógł: 4
Dołączył: 2.04.2005

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


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';

Go to the top of the page
+Quote Post
shark121
post
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 5
Dołączył: 31.03.2008

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


  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. ?>
Go to the top of the page
+Quote Post
BugsBunny
post
Post #3





Grupa: Zarejestrowani
Postów: 206
Pomógł: 4
Dołączył: 2.04.2005

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


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
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 Aktualny czas: 22.08.2025 - 00:01