Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP regulární výraz

Ahoj, už se tu 2 dny morduju s jedním regulárním výrazem v PHP (PCRE), cílem je najít v řetězci toto, uvedu příklad:
<%%#Zájmy#zajmy$>Nějaký obsah</zajmy>
Známe jenom slovo zajmy, víc nic
Ale pozor, ty znaky %% a $ v prvním tagu můžou či nemusí být, takže o to je to složitější, zatím jsem se dostal k tomuto ($key je proměnná, kterou známe):

/<(.*)\#(.*)\#$key(\$|)>(.*)<\/$key>/

To ale někdy vyplivne toto:

<#Jídlo#jidlo$> <#Pití#piti$> <#Barva#barva$> <#Hudební styl#hudebnistyl$> <#Kapela#kapela$> <#Televize#televize

Díky za odpověď.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Toto urcite funguje mam to otestovane <?php $key = 'text'; $string = '<%%#Text plný háčků a čárek#t…
MM.. 06.06.2009 15:23
MM..
Díky moc za trpělivost, s tím ereg to funguje :beer::beer: nový
marekdrtic 06.06.2009 15:37
marekdrtic
Funguje to urcite aj s preg, ked sa to urobi poriadne ;-) Ok, neni zac. poslední
MM.. 06.06.2009 15:41
MM..

Toto urcite funguje mam to otestovane

<?php
$key = 'text';
$string = '<%%#Text plný háčků a čárek#text$>Text s háčky a čárkami</text>';
$regex = '<%*#[^<>]*#'.$key.'\$?>[^<>]*</'.$key.'>';

if( ereg($regex, $string, $regs) )
{
 $vypisat = htmlspecialchars($regs[0]);
 echo $vypisat;
}
else
{
 echo "Nepasuje";
}
?>

Schavlne ten regex skladam a pouzivam jednoduche uvodzovky, aby nevznikali problemy s tymznakom $, ten je tam najproblemovejsi.

Ziadne zatvorky netreba. Zatvorky sa u ereg v PHP pouzivaju tusim na to aby si rozdelil string do podpoli (podpolia by boli potom v $regs[1] , $regs[2], ... atd)

Zpět do poradny Odpovědět na původní otázku Nahoru