Autor Zpráva
ígl
Profil *
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
To máš fuk, protože HTML ignoruje násobné mezery. Pokod chceš vynutit mezeru musíš použít entitu &nbsp;, 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
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
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 *
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
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
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
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
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
holi:
Myslím že to je odpověď
Co jako?
holi
Profil
celý příspěvek byl určen pantherovi.

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: