Autor Zpráva
raddimm.xx
Profil
Nevidím chybku

$data = "To je ale [url=http://stackoverflow.com]http://stackoverflow.com[/url] docela m To je ale";

   $match = [
        '/\[url=([^\]]+)\](.*)\[\/url\]/im',
        '/\[b\](.*)\[\/b\]/im',
    ];            
    $replace = [
        '<a href="$1">$2</a>',
        '<strong>$1</strong>',
    ];          

   echo preg_replace($match, $replace, $data);

Toto vypíše vše OK Změní odkaz ... ale když umístím další odkaz nebo jen [/url] tak to udělá aktivní celou část až do poslední [/url] který najde

$data = "To je ale [url=http://stackoverflow.com]http://stackoverflow.com[/url] docela m To je ale [/url]";

Výsledek:

To je ale <a href="[url=http://stackoverflow.com">stackoverflow[/url]http://stackoverflow.com">stackoverflow[/url[/url]] docela m To je ale </a>
Radek9
Profil
raddimm.xx:
Použij blok pro kód (Ctrl + E), takhle se ti do toho míchá místní BBCode a není z toho nic poznat.
raddimm.xx
Profil
Radek9:
pardon, upraveno snad
blaaablaaa
Profil
raddimm.xx:
Výsledek podle příkladu je sice jiný, ale myslím, že chceš použít non-greedy expression - .*? (snaží se najít co nejkratší string)
raddimm.xx
Profil
blaaablaaa:
DEKUJI mega moc

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