Wyrażenia regularne - zamiana <br> na \n tylko w specjalnych fragmentach

0

Załózmy mam taki string:

    $zmienna = 'ala ma kota
    kot ma ale
    [code=cos]to jest kod
    tutaj br nie moze
    sie znajdowac[/code]
    to jest dalszy tekst';

Po 'obróbce', ten kod powinien wyglądać tak:

    $zmienna = 'ala ma kota<br>kot ma ale<br>[code=cos]to jest kod
    tutaj br nie moze
    sie znajdowac[/code]<br>to jest dalszy tekst';

Podsumowując, zamiana \n na
wszędzie, oprócz tekstów w tagach [code=*]text[/code].

Ułożyłem takie coś:

    	$string = str_replace(array("\n"), array("\n<br />\n"), $string);
    $string = preg_replace("#\[code=([a-zA-Z]+)\](.*?)\[\/code\]#si", (str_replace("\n<br />\n", "\n", '[code=\\1]\\2[/code]')), $string);

najpierw zamieniam wszystkie \n na
, a potem niby 'pozbywam' się tego
ze środka tagów [code=*][/code]. Niby dlatego, że się nie pozbywam bo to nie działa... Ktoś mnie oświeci, nakieruje?

0
$string = 'ala ma kota
kot ma ale
[code=cos]to jest kod
tutaj br nie moze
sie znajdowac[/code]
to jest dalszy tekst';
	
$string = preg_replace('#(\[code=[a-zA-Z]+\])(.*?)(\[\/code\])#esi', "'$1'.str_replace('<br />', '', '$2').'$3'", nl2br($string));

/*
ala ma kota<br />
kot ma ale<br />
[code=cos]to jest kod
tutaj br nie moze
sie znajdowac[/code]<br />
to jest dalszy tekst
*/

1 użytkowników online, w tym zalogowanych: 0, gości: 1