Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z preg_replace
Forum PHP.pl > Forum > PHP
mb83
Witam

mam problem z preg_replace.
Poniższy kod zamienia tekst w aktywne linki.
Tylko jak przerobić tą funkcję aby nie była ona wykonywana gdy w danym artykule osadze np. film YT (w kodzie też jest http:// url filmu) i wtedy mi całość rozwala co jest zrozumiałe.

  1. function addURL($st) {
  2.  
  3. $st = preg_replace("/(https?|ftp)(:\/\/[[:alnum:]@#%\&_=?\/\.-]+)/","<a href='\\1\\2' target='_blank'>\\1\\2</a>",$st);
  4.  
  5. return $st;
  6. }
  7.  
  8. $string = "$row[5]";


Bardzo prosze o pomoc
Dzięki
Michael2318
Może najpierw w preg_match znajdź sobie wszystkie linki do zamiany. Jako ostatni parametr w preg_match podajesz nazwę tablicy, w której będą znalezione fragmenty. Jeśli w znalezionym fragmencie znajduje się słowo 'youtube' to nie zamieniasz. W przeciwnym razie - zamieniasz , czyli str_replace dla tego fragmentu.
mb83
A czy mogę prosić w formie kodu?
Nie za bardzo wiem jak to złożyć :-)
tolomei
Witaj.

Twój problem jest nawet szerszy bo w tekście mogą znaleźć się obrazki oraz już istniejące linki.
Możesz wykonać przewidywanie wsteczne.


Kod
<?php

function addURL($st) {

      $st = preg_replace('/(?<!(?: src|href)=["\'])(https?|ftp)(:\/\/[[:alnum:]@#%\&_=?\/\.-]+)/','<a href="\\1\\2" target="_blank">\\1\\2</a>', $st);
      
      return $st;
}

$string = '<img src="https://www.google.pl/images/srpr/logo4w.png" />
http://www.wp.pl/
https://helion.pl/
<iframe width="420" height="315" src="http://www.youtube.com/embed/AJsWz9SlpfA" frameborder="0" allowfullscreen></iframe>';

echo addURL($string);



Wynik:
  1. <img src="https://www.google.pl/images/srpr/logo4w.png" />
  2. <a href="http://www.wp.pl/" target="_blank">http://www.wp.pl/</a>
  3. <a href="https://helion.pl/" target="_blank">https://helion.pl/</a>
  4. <iframe width="420" height="315" src="http://www.youtube.com/embed/AJsWz9SlpfA" frameborder="0" allowfullscreen></iframe>


Pozdrawiam.
mb83
dzięki za pomoc ;-)
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.