Autor Zpráva
Mastodont
Profil
Ještě jeden dotázek na reguláry bych měl: následující pattern zachytí v BBCode křížení tagů ..[u] .. ..[/u]

'/[b][^([/b)]*?([u])[^([/u])]*?[/b]/'


Dá se to nějak upravit, aby to umělo zachytit zároveň i křížení B a I, I a U ?
Mastodont
Profil
Aha, moje chyba - jde o křížení tagů B - U - /B - /U a ten regulár vypadá takto:

'/[b][^([/b)]*?([u])[^([/u])]*?[/b]/'
Mastodont
Profil
Do háje, i se zakázaným formátováním je to vidět blbě .. tak nic, mázněte to. Díky.
Timy
Profil
A jen tak pro zajímavost, jak má vypadat regulár, který mi z [tex]výraz[/tex] udělá <img src="http://domena.cz/výraz">? Vymyslel jsem tohle:

ereg_replace("[tex]([^/]*)[/tex]", "<img src="http://domena.cz/1">",$text)

Ale už z definice je vidět, že se v textu nesmí vyskytnout lomítko "/", což je na prd. Nejsem schopný tam narvat podmínku, že tam nesmí být celé [/tex], tedy něco ve smyslu: [tex]([^([/tex])]*)[/tex] (nefunguje).
nightfish
Profil
Timy
snad to projde správně...
$text = preg_replace("/\[tex\](.*)\[\/tex\]/U", "<img src='http://domena.cz/\\1'>", $text);
niCe
Profil
Já to většinou řeším tak, že pomocí str_replace nahradím
str_replace ("[tex]", "Đstart", $vyraz);
str_replace ("[/tex]", "Đ", $vyraz);

No a pak dam
$vyraz = explode ("Đ", $vyraz)

a již jen v cyklu

for ($i = 0, $i <= count($vyraz); $i++):
$dil = trim($vyraz[$i]);
if (substr($dil, 0, 5) == "start"):$tohlechci = substr($dil, 5);endif;

$obrazek = "<img src="domena.cz/$tohlechci">
endfor;


Doufám, že nekecám nesmysly...

niCe
Timy
Profil
nightfish
Díky, funguje.
Toto téma je uzamčeno. Odpověď nelze zaslat.