Autor Zpráva
rak
Profil *
Ahoj,
potreboval bych z nejakeho textu vybrat <strong><span style="color: red;">neco</span></strong> a nahradit to <div class="titulek"><h2>neco</h2></div>. Zjistil jsem ze se na to da pouzit fce preg_replace(), ale bohuzel se v regularnich vyrazech jeste moc nevyznam.
Pokousel jsem se sam o neco podobneho, ovsem vratilo mi to chybu:(
v $a je ten text.
$b = preg_replace('<strong><span style="color: red;">(.*)</span></strong>', '<div class="titulek"><h2>$1</h2></div>', $a);

Mohl by mi prosim nekdo pomoct?
Predem diky
Radek9
Profil
rak:
$b = preg_replace('/\<strong\>\<span style\="color: red;"\>(.*)\<\/span\>\<\/strong\>/i', '<div class="titulek"><h2>$1</h2></div>', $a);


Edit:
Majkl578:
A jo :D
virgo86
Profil
Radek9:
mohlo by být i takto??
$b = preg_replace('/<strong><span style="color: red;">$a<\/span><\/strong>/i', '<div class="titulek"><h2>$a</h2></div>');
Radek9
Profil
virgo86:
Ne. Pracoval by to jako str_replace. Tudíž by to nenahrazovalo cokoliv, ale $a.
Majkl578
Profil
[#2] Radek9
Escapujeme nepotřebné a neescapujeme potřebné.
Znaky, které je třeba escapovat jsou zde.

Správné a správně funkční řešení:
$input = '<strong><span style="color: red;">neco</span></strong>';

$output = preg_replace('~\<strong\>\<span style\="color\: red;"\>(.*)\</span\>\</strong\>~iU', '<div class="titulek"><h2>$1</h2></div>', $input);

var_dump($output);

Jen bych ještě zdůraznil, že modifikátor U je zde důležitý, jinak by se při více výskytech nahradilo vše od počátku prvního nálezu do konce posledního, ne jednotlivě.

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