Autor Zpráva
GreenMan
Profil
Dobrý deň. Chcel by som sa vás na niečo spítať spítať.
Mám premenú napríklad
$premena="Bla bla bla[tag]<b>Hrubý text</b>  <img src='/IMG/img.png'>[/tag]bla bla bla";

A chcem aby každé &lt; a &gt; medzi [tag][/tag] sa prepísalo <> vôbec neviem ako na to.
Jan Tvrdík
Profil
GreenMan:
Zkusil bych preg_replace_callback.
Majkl578
Profil
$data = "Bla bla bla[tag]&lt;b&gt;Hrubý text&lt;/b&gt;  &lt;img src='/IMG/img.png'&gt;[/tag]bla bla bla";

echo preg_replace_callback('~\[(?<tag>[a-z]+)\](?<text>.*)\[/\\1\]~Uiu', function($m) {
	$tag = $m['tag'];
	return "[$tag]" . str_replace(array('&lt;', '&gt;'), array('<', '>'), $m['text']) . "[/$tag]";
}, $data);
GreenMan
Profil
Majkl578:
Neviem či som niečo nepochopil na tom kóde ale v súbore mám len tento kód a ukazuje mi to tento error:
Parse error: syntax error, unexpected T_FUNCTION in C:\Users\GreenMan\Desktop\Moje weby\nwm.php on line 4
Alphard
Profil
Možná takhle:
$data = "Bla bla bla[tag]&lt;b&gt;Hrubý text&lt;/b&gt;  &lt;img src='/IMG/img.png'&gt;[/tag]bla bla bla";

function x($m)
{
    $tag = $m[1];
    return "[$tag]" . str_replace(array('&lt;', '&gt;'), array('<', '>'), $m[2]) . "[/$tag]";
}

echo preg_replace_callback('~\[(?<tag>[a-z]+)\](?<text>.*)\[/\\1\]~Uiu', "x", $data);
Majkl578
Profil
[#4] GreenMan
Ten kód nefunguje v PHP verzi nižší než 5.3. Alternativa je funkce (viz. [#5]) nebo create_function:

$data = "Bla bla bla[tag]&lt;b&gt;Hrubý text&lt;/b&gt;  &lt;img src='/IMG/img.png'&gt;[/tag]bla bla bla";

echo preg_replace_callback('~\[(?<tag>[a-z]+)\](?<text>.*)\[/\\1\]~Uiu', create_function('$m','
    $tag = $m[\'tag\'];
    return "[$tag]" . str_replace(array(\'&lt;\', \'&gt;\'), array(\'<\', \'>\'), $m[\'text\']) . "[/$tag]";
'), $data);

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: