Portál AbcLinuxu, 9. května 2025 21:53

Dotaz: Problém s výstupem

29.8.2013 13:41 Jaroushk
Problém s výstupem
Přečteno: 296×
Odpovědět | Admin
Ahoj, poradi nekdo s timto problemem? Vsechny soubory jsou v UTF-8 a přesto na výstupu mám místo Hlavní stránka napsáno Hlavnà stránka
$html = //promena obsahuje cely html kod z php
$doc = new DOMDocument();
$doc->loadHTML($html);
$doc->formatOutput = true;
$doc->encoding = 'UTF-8';
echo $doc->saveHTML();
Pokud vypíšu echem promnou $html primo, je vse v poradku. Dekuji za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.8.2013 13:50 bono
Rozbalit Rozbalit vše Re: Problém s výstupem
Odpovědět | | Sbalit | Link | Blokovat | Admin
A tohle jsi zkousel?

$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
29.8.2013 14:02 Jaroushk
Rozbalit Rozbalit vše Re: Problém s výstupem
To jsem nezkousel, az ted. Na obrazovce už vidím korektni text ale v kodu je stale H l a v n & i a c u t e ; s t r & a a c u t e ; n k a (bez mezer)

Jinak moje hlavicka je
$html  = '<!DOCTYPE html>';
$html .= '<html lang="cs">';
cili nemam obsah stranek v xml. Nejaky napad? Diky
29.8.2013 14:26 Kit
Rozbalit Rozbalit vše Re: Problém s výstupem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle mne se to tímto způsobem vůbec nemá používat. Výstup dělám přes
echo $xsl->transformToXML($doc);
protože v $doc mám DOM výstupních dat a v $xsl je výstupní šablona. XML ani HTML v PHP vůbec nevytvářím, protože by to dost zdržovalo.
29.8.2013 15:01 Jaroushk
Rozbalit Rozbalit vše Re: Problém s výstupem
XML ani HTML v PHP vůbec nevytvářím, protože by to dost zdržovalo.
Muzes to prosim upresnit? Diky
29.8.2013 15:23 Kit
Rozbalit Rozbalit vše Re: Problém s výstupem
Veškeré HTML mám v šabloně a data pro šablonu dávám přímo do DOMu. Přece to HTML nebudu generovat do $html, parsovat loadHTML() a hned zase serializovat saveHTML(). To je spousta zbytečných úkonů navíc. Máš k tomu nějaký speciální důvod?
29.8.2013 16:36 Jaroushk
Rozbalit Rozbalit vše Re: Problém s výstupem
To nemám. leč si nějak nedokážu představit, jak dokážeš od sebe oddělit php a html tágy :-( To je snad i nemožné, ne?
29.8.2013 18:05 Kit
Rozbalit Rozbalit vše Re: Problém s výstupem
Možností je víc. Například třída XMLwriter generuje celkem snadno docela hezký kód. Tohle jsou pozůstatky z mých experimentů s REST, kde jsem si ověřil, že HTML umí jen GET a POST. Kdyby to měl být produkční kód, asi bych to napsal slušněji.

Tohle dělám, když z nějakého důvodu nechci použít šablonu. Kód z velké části recykluji. Určitě to lze napsat lépe. Vyzkoušej si to.
<?php
$method= $_SERVER['REQUEST_METHOD'];

$html = new XMLwriter();
$html->openMemory();
$html->setIndent(true);
$html->writeDTD('html');
$html->startElement('html');
$html->startElement('head');
$html->startElement('meta');
$html->writeAttribute('charset', 'UTF-8');
$html->endElement();
$html->startElement('script');
$html->writeAttribute('type', 'application/javascript');
$html->writeAttribute('src', 'jquery-latest.min.js');
$html->text('');
$html->endElement();
$html->startElement('script');
$html->writeAttribute('type', 'application/javascript');
$html->text(<<<EOT

$(document).ready(function() {
    $('h1').css({'background-color': 'yellow'});
    $.ajax({context: document.body}).done(function()) {
        $(this).css({'background-color': 'blue'});
    }
});

EOT
);
$html->endElement();
$html->endElement();

$html->startElement('body');
$html->writeElement('h1', $method);
$html->writeElement('p', 'Příšerně žluťoučký kůň úpěl ďábelské ódy');
$html->writeElement('p', 'Výrobek "hysterezní smyčka" prodává firma <Albert&syn>');
foreach (array( "GET", "POST", "PUT", "DELETE", "PATCH") as $method) {
    $html->startElement('form');
    $html->writeAttribute('method', $method);
    $html->startElement('input');
    $html->writeAttribute('type', 'text');
    $html->writeAttribute('value', $method);
    $html->endElement();
    $html->startElement('input');
    $html->writeAttribute('type', 'submit');
    $html->writeAttribute('value', 'Odeslat');
    $html->endElement();
    $html->endElement();
}
$html->endElement();
$html->endElement();
echo $html->flush();

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.