Autor Zpráva
Muty
Profil
Zdravim!
Uz delsi dobu se snazim vytvorit regularni vyraz, ktery by dokazal projit soubor, ktery je ulozeny v promnene a vytahnout od tamtud data, ktere budou oznaceny <!-- titulek(TEXTKEXTRAHACI) -->. BOhužel se mi nedarilo a casova tisen mi nedovoli se tomu vice venovat proto prosim o pomoc zkusenejsi, pro ktere to urcite nebude problem.
Dekuji
Retal
Profil
preg_match_all('@<!-- titulek(([^)]+)) -->@U', $vstup, $vystup);
Muty
Profil
tento vyraz jsem zkusil v teto konstrukci:

$adr="data/".$compilpage.".html";
$page=fopen($adr,r);
$filesize=filesize($adr);

$pagedate=fread($page,$filesize);
fclose($page);
if(preg_match_all('@<!-- titulek(([^)]+)) -->@U', $pagedata, $titulek));
{
print_r($titulek);
$this->settitle($titulek[0]);
}

a vypise Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

obsah souboru ktery se nacita:

<!-- titulek(pokus) -->
pokus
Muty
Profil
Napada Vas co s im?
Mastodont
Profil
Kulatý závorky je nutný escapovat. Zkus

if(preg_match_all('@<!-- titulek#([^)]+#) -->@U', $pagedata, $titulek));

Namísto # patří zpětné lomítko.
Retal
Profil
Aha, já je escapnul, ale systém to sežral při poslání příspěvku. Jak říká Mastodont, doplň zpětná lomítka, nicméně, Mastodonte, tvůj kód je chybný, chybí ti tam neescapované závorky. :)

preg_match_all('@<!-- titulek#(([^)]+)#) -->@U', $vstup, $vystup);


Zaměň # za zpětné lomítko.
Mastodont
Profil
Retal

No mně to totiž funguje i bez nich. Neescapované závorky tam dáváš snad jen tehdy, když chceš pak s obsahem závorek pracovat jako se subvýrazem, třeba při nahrazování, ne?

Konkrétně - proč [^)]+ dávat ještě do závorek?
Retal
Profil
Protože ho chce Muty získat? :)
Muty
Profil
Děkuji,
nimene mam posledni dotaz a to
kdyz mam vystup
Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => pokus ) )

tak jak se mam dostat k tomu pokus?
Retal
Profil
Pokud těch "pokusů" budeš mít víc, pak:

foreach($vystup[1] AS $a) {
echo $a.'<br />';
}

Jinak stačí

$a = $vystup[1][0];
Toto téma je uzamčeno. Odpověď nelze zaslat.