Autor Zpráva
theNookyn
Profil
Dělám něco jako BB kódy a zkoušel jsem převést text na HTML pomocí str_replace(). Podařilo se, jenže mi to přijde na nic.
(Pokud někdo odešle [/yt], vypíše se jen \" frameborder=\"0\" allowfullscreen></iframe>. Viz kód níže.)

$co = array("[yt]", "[/yt]");
$cim = array("<iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/", "\" frameborder=\"0\" allowfullscreen></iframe>");
$prispevek = str_replace($co, $cim, $_POST["prispevek"]);

Chtěl bych to převést do reguláru.

Tak nějak by to mělo vypadat:

hledat: [yt]11 různých znaků[/yt]

nahradit: <iframe width="560" height="315" src="http://www.youtube.com/embed/11 různých znaků" frameborder="0" allowfullscreen></iframe>

Chci použít preg_replace().


Moderátor Joker: Titulek „Regulární výrazy“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Darker
Profil
\[yt\][0-9a-z]{11}\[\/yt\] -i
Youtube má i zkrácenou adresu: http://youtu.be/11 různých znaků
theNookyn
Profil
A když chci dostat ty znaky mezi [yt] a [/yt] do dalšího parametru?

Nyní to vypadá takto:

$co = "\[yt\][0-9a-z]{11}\[\/yt\] -i";
$cim = "<iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>";
$prispevek = preg_replace($co, $cim, $_POST["prispevek"]);
Darker
Profil
theNookyn:
Přečti si dokumentaci preg_replace.
Regulární výraz v PHP: (delemiter ~ není jediný možný)
~vyraz~parametry
JavaScript:
/vyraz/parametry
theNookyn
Profil
Díky moc, už to funguje :)

$co = "~\[yt\]([0-9a-z]{11})\[\/yt\]~ i";

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: