Autor Zpráva
Kajik12
Profil *
Zdravím, mám kód
$string = ereg_replace("\[SIZE=([0-9])\](.*)\[/SIZE\]", '<font size="\\1">\\2</font>', $string);

proměnná $string v tomto případě obsahuje např.
[SIZE=4][COLOR=#4169E1]text[/COLOR][/SIZE][SIZE=4][/SIZE]

výše zmíněný script z tohoto kódu ovšem udělá
<font size="4">[COLOR=#4169E1]text[/COLOR][/SIZE][SIZE=4]</font>

vezme veškerý text mezi prvním size a posledním uzavřením size, takže [/SIZE][SIZE=4] zůstane.
Mou otázkou je, jak docílit toho, aby to bralo prvni [/SIZE] na které natazí v textu? Předem děkuji, reguláry moc neovládám.

Moderátor Joker: Titulek „Regulární výrazy“ byl moc obecný, změnil jsem ho.
Joker
Profil
Kajik12:
POSIXové regulární výrazy (funkce ereg*) byly zavrženy ve prospěch Perl-compatible regulárních výrazů (funkce preg*).

Jinak problém řeší tzv. líné kvantifikátory. Tady je to (mnou) vysvětlené.
Kajik12
Profil *
nyní to mám takhle:
$string = preg_replace("/\[SIZE=([0-9])\](.*?)\[/SIZE\]", '<font size="$1">$2</font>', $string);

ale také warning a žádný $string
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'I' in /var/www/..../index.php on line 159
Kajik12
Profil *
vyřešeno % místo / a na konci. Děkuji jokerovi za hlavní radu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0