Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_replace - ułożenie wzorca
Forum PHP.pl > Forum > PHP
Darek M.
Witam, potrzebuje ułożenia wzorca, aby z takiego tekstu:
Kod
{FF0000}test

zamieniał na:
Kod
<font color="#FF0000">test</font>

Przy większej ilości:
Kod
{FF0000}test{0000FF}drugi

powinno to wyglądać w ten sposób:
Kod
<font color="#FF0000">test<font color="#0000FF">drugi</font></font>

LUB (moim zdaniem trudniejsza wersja)
Kod
<font color="#FF0000">test</font><font color="#0000FF">drugi</font>


Korzystając z innego gotowego wzorca, który zamieniał {test} na wartość tablicy $Tekst['test'], przerobiłem go w ten sposób:
  1. $Tekst['description'] .= preg_replace('#\{([A-Fa-f0-9]*?)\}#', '<font color="#\1">', $opis['opis']);

jednak nie wiem, w jaki sposób tekst za klamrą zamykającą przerobić tak, aby na końcu wejścia dodać znacznik zamykający </font>.

Z góry dziękuję za pomoc, niestety wyrażenia regularne mnie przerastają.
amii
Może w ten deseń pisane z palca bez testów:
  1. preg_replace('#\{([A-Fa-f0-9]{1,6})\}(\S+)#', '<font color="#\1">\2</font>', $opis['opis']);
Darek M.
"Prawie" działa, problemem są spacje, po których tekst nie jest kolorowany do następnego "markera":


dla
WiruSSS
  1. preg_replace('#\{([a-fA-F0-9]{6})\}([^{}]+)#', '<font color="#\1">\2</font>', $tekst)
Darek M.
Działa, dziękuję bardzo smile.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.