

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ěď.
Vyřešeno? Bylo by slušnost napsat jak?
Já to ještě dolaďoval, aby to vypadalo nějak normálně ten výraz:
Takhle mi to alespoň funguje na 100%
omg to preco tam vymenovavas tie znaky, nestaci ta negacia? :) Ale ok, ako chces. Ale sa mi zda ze ti tam chyba jedno ]
Toto mi tam jaksi nefunguje
Nefunguje a nechápu proč, ještě pro upřesnění, má to hledat třeba takovýto řetězec:
Este nie som si isty ci tam nejak nepouzivas blbo tie zatvorky, skus
Tie znaky / na zaciatku a na konci je predpokladam PHP zalezitost. K vyrazu to nepatri.
ne, ty závorky tam musí být, jinak to nefunguje vůbec a hází chybu, že je špatný ten regex.
Pouizvas funkciu ereg? Ak ano tak vyhod to / na zaciatku a na konci a aj to \ pred /
používám preg.
A vyhod aj tie \ pred #. # neni specialny znak.
Toto urcite funguje mam to otestovane
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)
Díky moc za trpělivost, s tím ereg to funguje
Funguje to urcite aj s preg, ked sa to urobi poriadne
Ok, neni zac.
Ked nechces regex skladat, tak toto funguje urcite (mam otestovane):
Pred $ musia byt dve \, pretoze jedno odstrani PHP (kvoli "" stringu a druhe porebuje REGEX.
Inac nabuduce ked ti nieco nefunguje tak hladaj pricinu zjednodusovanim.
) a samozrejme prislusne upravis aj vstup (aby bol jednoduchsi) a testujes az kym to zacne pracovat tak ako predpokladas. ;)
T.j. mas nejaky program testovaci a z niecoho co je moc zlozite (u nas ten regex) vyhadzujes postupne veci ktore sa ti mozu zdat nebezpecne (ja som zacal tym $