Autor Zpráva
(.) (.)
Profil *
V promenne mam ulozeny text s html, ktery ma vetsi objem, ale hlavne ma mezery radky a specialni znaky v sobe. zhruba uprostred je cast kodu, ktery bych chtel vyjmout a ulozit ho treba do pole nebo do jine promenne. Vypada to asi takhle:


<td class="caption2">

<b>Zaloľit nové téma s názvem:</b></td>

<tr><td class="caption2"><b>Vaąe jméno</b></td></tr>
<!-- zacatek kodu -->
<tr><td style="padding:5px"><span class="txtSm"><b><label for="user_usr">Jméno:</label></b> <input type="text" size="10" maxlength="40" name="user_usr" id="user_usr" value="(.) (.)" class="textForm">
<!-- konec kodu -->

<b><label for="user_pwd" class="about" title="Pokud nezadáte své heslo, va‘e příspěvky nebudou označeny va‘ím

-samozrejme jen pro ukazku ve skutecnosti je to podstatne delsi. A ja se ptam, jak udelat regularni vyraz, aby funkce preg_match() nebo preg_match_all() vybrala jen tu cast, kterou jsem oznacil tucne. zkousel jsem neco takoveho: /(.*)<!-- zacatek kodu -->(.*)<!-- konec kodu -->(.*)/i ovsem vrati prazdne pole. Poradi nekdo s timto vyrazem, aby vybral tu tucnou cast?
bohyn
Profil
Mozna neco takoveho, jen si nejsem jisty jak to se znakama "!" a "-", jestli nepotrebuji zpetne lomitko
/<!-- zacatek kodu -->(.*?)<!-- konec kodu -->/
(.) (.)
Profil *
tak uz jsem pokrocil :) Na strance http://www.regexp.cz/ jsem si overil, jestli to neco najde a naslo to presne to, co chci :) Vyraz ma vypadat takhle: <!-- zacatek kodu -->(.*)<!-- konec kodu --> bez lomitek!!!! :( ale to me funkce preg_match() nevezme pise to Unknown identifier "<" :( Jak tohle obejit ?
Měsíček
Profil
S lomítky pokud je to reg výraz.. před < dej zpětné lomítko.
(.) (.)
Profil *
a jak je to s "!" "-" ">" ?? taky se musi escapovat zpetnym lomitkem ?
Měsíček
Profil
Řekl bych, že ne.
(.) (.)
Profil *
kdyz pouziju tohle, preg_match("/\<!-- zacatek kodu -->(.*)\<!-- konec kodu -->/", "$retezec", $pole); tak to nic neulozi do toho pole pritom v promenne $retezec obsah je. sice me bile znaky (mezery a radkovani), ale najit by to neco melo ne ?
tiso
Profil
(.) (.)
preg_match("/\<!-- zacatek kodu --\>(.*)\<!-- konec kodu --\>/Us", "$retezec", $pole);
BetaCam
Profil
Měsíček
S lomítky pokud je to reg výraz.. před < dej zpětné lomítko.

Ne! < není metaznak backslash je před ním naprosto k ničemu.
(.) (.)
Profil *
Měsíček
„S lomítky pokud je to reg výraz.. před < dej zpětné lomítko.“
Ne! < není metaznak backslash je před ním naprosto k ničemu.

Je uplne jedno, jestli tam backslash je nebo ne. na te strance regexp.cz co najde jak se zpetnym lomitkem tak bez
BetaCam
Profil
(.) (.)
Je uplne jedno, jestli tam backslash je nebo ne. na te strance regexp.cz co najde jak se zpetnym lomitkem tak bez

Ano proto to říkám < ani > nejsou metaznaky proto je uvádění backslashe před nimi naprosto zbytečné.
(.) (.)
Profil *
(.) (.) preg_match("/\<!-- zacatek kodu --\>(.*)\<!-- konec kodu --\>/Us", "$retezec", $pole);

Diky moc. Timto se problem vyresil :) stacilo na konci vyrazu misto /i napsat /us :D:D:D:D To sem ale trotl :D Jinak jsem se chtel zeptat, kde jsi na tento "parametr" narazil nebo kde jsi ho nasel? ja jen abych priste vedel, kde takovouhle prkotinku hledat. Z nejake literatury nebo ne netu? php.net mi nic nerekl.
BetaCam
Profil
(.) (.)
Modifikátory v php Manuálu

Nebu se můžeš kouknout do PCRE manuálu
(.) (.)
Profil *
Diky vsem za ochotu a rychle odpovedi :) tady vzdy nekdo poradi. Jinak omlouvam se ze takovou prkotinku (kdyz uvazim ze se jednalo o prepsani pouhych dvou znaku) :D Tak diky moc a mejte se fain :)
Měsíček
Profil
"Ano proto to říkám < ani > nejsou metaznaky proto je uvádění backslashe před nimi naprosto zbytečné."

Je mi jasné, že <> nepatří mezi metaznaky :) .. jen jsem si nebyl jistý jestli je potřeba escapovat tyto znaky jako jinde v řetězci :)
bohyn
Profil
"<" a "!" jsou metaznaky ikdyz nejsou uvedeny na seznamu. Funguji ale jen v urcite kombinaci (proto asi nejsou uvedeny na seznamu).

Lookbehind assertions start with (?<= for positive assertions and (?<! for negative assertions. For example, (?<!foo)bar does find an occurrence of "bar" that is not preceded by "foo".
PHP manual
BetaCam
Profil
bohyn
"<" a "!" jsou metaznaky ikdyz nejsou uvedeny na seznamu. Funguji ale jen v urcite kombinaci (proto asi nejsou uvedeny na seznamu).

Opět ne. To že sou konstrukce ve kterých se tyto znaky používají ( třeba ten tvůj výtah z maunálu ohledně "tvrzení" ) z nich nedělá metaznaky.

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:

0