Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z preg_replace
mb83
post 11.04.2013, 19:24:15
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


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

Ten post edytował mb83 11.04.2013, 19:26:39
Go to the top of the page
+Quote Post
Michael2318
post 11.04.2013, 21:41:08
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


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.

Ten post edytował Michael2318 12.04.2013, 06:27:51
Go to the top of the page
+Quote Post
mb83
post 12.04.2013, 21:05:49
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


A czy mogę prosić w formie kodu?
Nie za bardzo wiem jak to złożyć :-)
Go to the top of the page
+Quote Post
tolomei
post 12.04.2013, 22:34:08
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


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.

Ten post edytował tolomei 12.04.2013, 22:39:02


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
mb83
post 13.04.2013, 17:00:16
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

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


dzięki za pomoc ;-)
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: 26.06.2025 - 16:17