Řádkování v php, nahrazování textu

Zdar,
resim jenom jeden maly 'problem' ... tyka se upravy textu :)

rekneme ze mam $promena =
" Nejaky text, který je
na více řádku :)
[upr]
a na někteých řádcích je
[/upr]
třeba něco, co
je třeba nějak upravit. "

a mym cilem je zanechat radkovani(to neni primarni), ale zároven nahradit [upr] a [/upr] timto <span class="upr"> a </span>. Jednoduse jsem to resil takto:
$p_text = preg_replace('/\[upr\](.*?)\[\/upr\]/i', '<span class="upr">$1</span>', $p_text);
V reseni pomoci tohoto preg_replacu nemusim resit zadne uzavirani tagu <span> ... teorie pekna, ale zjistil jsem chybu v praxi - tento preg_replace mi to nenahradi pokud nekde jsou konce radku (pokud je tecka v reg.vyrazu jako konec radku) ...

Otazka: Jak to vyresit?

ps: myslim ze ohledne programovani a php nejsem lama, takze doufam v rozumne odpovedi a ne odpovedi typu google :))

pss: neexistuje napr nejaka funkce, která udělá z více řádkového textu jednorádkový (pak by stacilo pouzit jeste navic na zacatku funkci nl2br() a bylo by ...)?
zkus neco jako $promenna = str_replace("\n", " ", $promenna);
Zdar, nakonec byl problem jednodussi nez vypadal :)))
proste stacilo pouzit modifikator S .... ze me to nenapadlo hned, ze to bude nekde v modifikatorech .... :) ... takze vysledek vypada takto :)

$p_text = preg_replace('/\[upr\](.*?)\[\/upr\]/is', '<span class="upr">$1</span>', $p_text);
Ale abych rekl pravdu, tak tenhle regularni vyraz stale neni v poradku :) jeste neosetruje pripadnou nenasytnost :)

ale abych rekl pravdu, tak poradne netusim jak na to ... :)) uvazoval jsem nad timto:

$p_text = preg_replace('/\[upr\]([^(\[\/upr\])]?)\[\/upr\]/is', '<span class="upr">$1</span>', $p_text);

ale nefunguje mi to :) (prekvapive) - zrejme protoze v kontrukci [^ ] muze byt pouzit jeden znak, ne skupina :), ... takze netusim jak tam narvat vsechno krome te skupiny :)

mozna se s tim uz nekdo setkal .... kdyztak napiste. dik.
<HTML>Ad nenasytnost: http://www.webzdarma.cz/forum/read.php?f=2&i=40012&t=40012</HTML>
Hm, dik .... taky jsem o /U nikde necetl :))
(docela jsem ocekaval ze to lze vyresit i modifikatorem a tak jsem to hledal ... ale vsude jsou jenom takove ty zakladni (i,s,m,x,g) :)) )