Autor | Zpráva | ||
---|---|---|---|
ígl Profil * |
#1 · Zasláno: 18. 3. 2011, 19:41:11
Ahoj. Rád bych měl přehledný html odsazovaný po úrovních. Html kód generuju pomocí php. Dejme tomu že mám kus kódu:
<div> <?php echo $sablona->getObsah(); ?> </div> Potřeboval bych veškerý text vrácený funkcí getObsah odsadit o 6 mezer zleva. Není problém protáhnou to nějakou funkcí, ale existuje nějaká možnost jak automaticky zjistit kolik je to potřeba odsadit? Stačilo by mi nějak zjistit o kolik zleva je odsazené <?php pokud by kód byl: <div> <?php echo $sablona->getObsah(); ?> </div> Nenapadá vás jak to zjišťovat? Děkuji. |
||
Darker Profil |
#2 · Zasláno: 18. 3. 2011, 21:16:02 · Upravil/a: Darker
To máš fuk, protože HTML ignoruje násobné mezery. Pokod chceš vynutit mezeru musíš použít entitu , to je pevná mezera.
A pak odsazení samotné není problém: $text=$sablona->getObsah(); $odsazeni=6; $text=str_replace("\n","\n".str_repeat(" ",$odsazeni),$text); echo $text; Nicméně použít CSS vlastnost margin by bylo trochy chytřejší. |
||
holi Profil |
#3 · Zasláno: 18. 3. 2011, 21:29:10 · Upravil/a: holi
Darker:
„Nicméně použít CSS vlastnost margin by bylo trochy chytřejší.“ Myslím, ale, že tázající měl namysli dodržení sémantického webu nebo jak se to nazývá tzn. strukturovaný kód, ne odsazení text generovaný phpčkem. <div> <?php echo $sablona->getObsah(); ?> </div> //aby vygenerovaný kód nebyl např.: <div> <p>Strááááčně zajímavý článek</p> </div> //ale .... <div> <p>Strááááčně zajímavý článek</p> </div> Pokud jsem to ovšem pochopil správně já :) |
||
holi Profil |
#4 · Zasláno: 18. 3. 2011, 21:41:23 · Upravil/a: holi
Tak jak odsadíte php script tak bude odsazený vnořený text.
<?php $text = "<p>njcds nakcdsjkacnjkdsancjkdnsjkacnkds</p>\n"; ?> <html> <body> <div> <?php echo $text;?> </div> </body> </html> //zdrojový kód <html> <body> <div> <p>njcds nakcdsjkacnjkdsancjkdnsjkacnkds</p> </div> </body> </html> |
||
ígl Profil * |
#5 · Zasláno: 18. 3. 2011, 22:01:44
holi:
Ano mám na mysli strukturu kódu nikoliv interpretaci prohlížečem. „Tak jak odsadíte php script tak bude odsazený vnořený text.“ Nebude, jen první řádek. Třeba. $text = "<p>njcds nakc\ndsjk\nacnjkdsa\nncjkdnsj\nkacnkds</p>\n"; |
||
panther Profil |
#6 · Zasláno: 18. 3. 2011, 22:29:02
holi:
„tázající měl namysli dodržení sémantického webu“ počet bálých znaků v HTML nemá se sémantikou nic společného. ígl: to, o co se snažíš, je zbytečné. Navíc nikdy nevíš přesně, jaké to odsazení bude. Když přidám jeden obalující prvek, budeš všechny výskyty této funkce kontrolovat a upravovat počet mezer? Navíc, je lépe odsazovat tabulátory, než mezerami. |
||
meris Profil |
#7 · Zasláno: 19. 3. 2011, 00:39:57
Jaký je smysl generování zcela strukturovaného HTML? Pro prohlížeče to nemá valný smysl. Takže jako jediný důvod mě napadá odsazování kvůli CSS a lidskému pohledu na kód. A tady narážíš na docela dost problémů s automatickým generováním, pro jednoduché ruční úpravy by toto vyžadovalo úpravy při každé změně zarovnání, i když v principu by fungovalo řešení v příspěvku [#2] Darker.
Myslím, že pokud je účelem zpříjemnt práci kodérovi, tak by stačilo jen při vkládání vložit komentář, třeba takto: <!-- zde zacina vkladany text --> text... <!-- zde konci vkladany text --> |
||
Darker Profil |
#8 · Zasláno: 19. 3. 2011, 01:00:16
Pokud je opravdu cílem přehlednost kódu pak:
$dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadHTML($CELKOVY_VYSTUP); echo $dom->saveHTML(); Jak zachycovat výstup z bufferu si najdi na googlu. Stránka nesmí obsahovat chyby, celkově tohle řešení nedoporučuju, ale řešení to je. Používám obdobu tohohle na ukládání XML v přehledném formátu. |
||
holi Profil |
#9 · Zasláno: 19. 3. 2011, 12:35:28
panther:
„počet bálých znaků v HTML nemá se sémantikou nic společného“ holi: „nebo jak se to nazývá“ Myslím že to je odpověď, ale to je už OT. |
||
Darker Profil |
#10 · Zasláno: 19. 3. 2011, 16:44:31
holi:
„Myslím že to je odpověď“ Co jako? |
||
holi Profil |
#11 · Zasláno: 19. 3. 2011, 17:50:51
celý příspěvek byl určen pantherovi.
|
||
Časová prodleva: 13 let
|
0