Autor Zpráva
Bartolomey
Profil
Mám sekce webu založené na php souborech, obsah generuju přes get metodu a chtěl bych docílit toho, abych měl u každé stránky vlastní <title>. Není možné dávat všude podmínky if($_GET['sekce']=='stranka') .... protože to je přes 200 souborů. Chtěl jsem se teda zeptat, jak docílit toho, aby se mně titulek vytáhnul z nadpisu. Nadpisy jsou v souborech na různém řádku, není pravidlem, že je na prvním. Mám na ně funkci, tak bych potřeboval vědět, jak můžu ten text z té php funkce vytáhnout.
Mohl by mě někdo aspoň nějak navést jak na to, jakou funkcí nebo ještě lépe úplným příkladem? :) Vím, že by to šlo snad nějak přes regulární výrazy, ale s těma jsem si moc nepotykal.

Díky
Kcko
Profil
Jak jsi sam rekl .. regexp .. ukaz nakej priklad jak to mas a treba Ti to napisu nebo nekdo jiny
Bartolomey
Profil
Kcko
Začátek souboru vypadá vždycky nějak tak:
<?php hnadpis('Nadpis'); ?>
 ... html kód .. 

nebo taky

<?php hnadpis('Nadpis'); 
... php kód ..

?>

nebo i 

<?php
hnadpis('Nadpis');  // před tímto můžou být i mezery
 .....
?>
Kcko
Profil
Zeptam se takhle ... je to alespon v nejake H1,H2 .. ?
Bartolomey
Profil
V php souborech ne, jen ve výstupu se to formátuje na <h3> tagy. Jen nechápu, jak by se to dalo udělat, když se hlavičky generují před obsahem.
Kcko
Profil
Velmi snadno .. zkus si precist http://www.webfaq.cz/clanek/Jak-na-mnohonasobne-bufferovani-aneb-jak-s pravne-pouzivat-ob-start


ja to pouzivam taky takhle

mam

HTML HLAVICKU
{ZASTUPNA_ZNACKA_TITULKU}
dalsi HML + PHP trebas ..

HTML KONEC

toto vsechno si hodim do bufferu a nahradim zastupnou znacku titulku necim co sem ziskal treba uprostred stranky ...
Bartolomey
Profil
Díky, na bufferovaní jsem úplně zapoměl. :)
Kcko
Profil
Neni zac :)
Bartolomey
Profil
Jak už jsem psal, ty regulární výrazy mně do hlavy nevlezly, zkusil jsem to nahrazování pořešit přes explode, ale k ničemu pádnému jsem se nedostal. Napsal by jsi mně, prosím, příklad jak to z toho <h3> tagu dostanu? :) Díky
jansfabik
Profil
no jednoduše takto:

$page = file_get_contents($filename);
$startpos = strpos($page, '<h3>')+4;
$endpos = strpos($page, '</h3>');

$title = substr($page, $startpos, $endpos-$startpos-1);


PS: nemám to odzkoušené, pravděpodobně to ještě bude chtít někde přidat -1 nebo +1 ;-)
Kcko
Profil
preg_match("~<h3>(.+?)</h3>~si", $stranka, $out);
print_r($out);
jansfabik
Profil
Kcko
moje řešení je rychlejší ;-) nedoporučuji používat regulární výrazy při každém načtení stránky, jednak to sníží zátěž na serveru a zároveň to taky zvýší rychlost načítání
Kcko
Profil
Ale nepovidej :-) to jsou mi sakra veci ;-))) tak ja du vyhazet vsechny regexpy co mam na webe v sablonach a tak a doufam ze mi pak admin posle email jak sem mu snizil zatez serveru minimalne o 30% :)))
BetaCam
Profil
jansfabik
moje řešení je rychlejší ;-)

No tvrzení je to pěkné, ale bohužel tomu tak není. Při měření se tvé řešení pohybovalo mezi 1,2ms - 1,9ms, řešení od Kcko se pohybovalo mezi 1,1ms - 1,5ms. Nejvíce z zápisů trvala funkce file_get_contents() a to +- 0,6ms.

Při volání v cyklu ( 1000 cyklů ) bylo Kckovo řešení pomalejší zhruba o 100ms a trvalo +- 320ms tvé řešení trvalo +- 230ms
Při volání v cyklu ( 100 cyklů ) bylo Kckovo řešení pomalejší zhruba o 10ms a trvalo +- 33ms tvé řešení trvalo +-25ms

Zhruba je tedy použití preg_match pomalejší o +-10ms na každých 100 cyklů, což ovšem není tento případ.

Když vypustíš chyby způsobené měřením zjistíš, že oba zápisy sou v tomto případě zhruba stejně rychlé. Jen u toho tvého se člověk víc napíše a udělá si kód víc nepřehledný :)

nedoporučuji používat regulární výrazy při každém načtení stránky, jednak to sníží zátěž na serveru a zároveň to taky zvýší rychlost načítání

O tomhle by se dalo spekulovat celé hodiny. :)

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: