Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_replace i błędna interpretacja linków
Forum PHP.pl > Forum > Przedszkole
Chris_
Witajcie,
od kilku godzin męczę się z prostym wyrażeniem preg_replace i już zaczynam chodzić po suficie, bo nie wiem jak to zrobić sciana.gif

Pobieram z bazy rekordy ze znacznikami html, które zamieniam za pośrednictwem funkcji htmlspecialchars na odpowiednie "zamienniki".

Przepuszczam jedynie znaczniki b, u, i oraz linki (a href). I to właśnie z linkami mam problem ;/

Jeżeli w jednym rekordzie z bazy pojawią się dwa linki, to funkcja preg_replace łączy je w jeden.

Takie zdanie:
Polecamy <a href="http://www.onet.pl" target="_blank">Portal onet.pl</a> oraz <a href="http://www.wp.pl" target="_blank">Portal wp.pl</a>

Zostanie zamienione przy zastosowaniu kodu:

  1. $str = htmlspecialchars($str);
  2. $str = stripslashes($str);
  3. $str = str_replace("target=&quot;_blank&quot;","target=\"_blank\"",$str);
  4. $str = preg_replace('/\&lt;a([^<>]*)href=\&quot;([^<>]*)\&quot;([^<>]*)\&gt;([^<>]*)\&lt;\/a\&gt;/', '<a$1href="$2"$3>$4</a>', $str);


na:
  1. Polecamy <a href=&quot;http://www.onet.pl&quot; target="_blank"&gt;Portal onet.pl&lt;/a&gt; oraz &lt;a href="http://www.wp.pl" target="_blank">Portal wp.pl</a>


Liczę na Waszą pomoc guitar.gif
mls
  1. $str = preg_replace('/\&lt;a(.+?)href=\&quot;(.+?)\&quot;(.*?)\&gt;(.*?)\&lt;\/a\&gt;/', '<a$1href="$2"$3>$4</a>', $str);


Poczytaj o różnicy pomiędzy greedy i non-greedy expression.
winksmiley.jpg
Chris_
D-z-i-ę-k-u-j-e thumbsupsmileyanim.gif
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.