Avatar
asanos
Člen
Avatar
asanos:

Dnes jsem se dostal do problému s short_open_tag v php, kdy jsem uvnitř

<?php
...
?>

potřeboval definovat XML kódování.
Jak asi tušíte, objevila se tam chybka. ;)
_____________­_____________
Zjednodušeně, dělal jsem si třídu pro parsování dat z DB do XML a všechno jsem strkal do jednoho řetězce, ve kterém jsem na začátku potřeboval definovat XML kódování.

<?php
$xml='<?xml version="1.0" encoding="utf-8"?>\n';
?>

Problémem je, že <?php je uzavřeno koncovým ?> u kódování XML.
_____________­_____________
Řešení téhle prkotiny je následující:

<?php
$xml='<?xml version="1.0" encoding="utf-8"?'.'>\n';
?>

Doufám, že až se někdy střetnete s tímto problémem, vzpomenete si na mě a můj topic. ;)

_____________­_____________

  • Tímto se nechci pochlubit, ale poukázat na takovou blbost, co dokáže potrápit programátora i na 2 hodiny.

Chybu mi totiž řvalo XML a ne php, tak jsem nevěděl, kde je problém. :D

Pokud někdo zná elegantnější řešení, tak sem s ním, budu velmi rád. ;)

Odpovědět 29.4.2014 23:52
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na asanos
Juraj Mlich:
<?php
header('Content-Type: text/xml');
?>
Nahoru Odpovědět  +2 30.4.2014 11:21
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
asanos
Člen
Avatar
asanos:

jj, to je samozřejmost :D
Teda pokud se jedná o okamžitý report na web... Pokud to budu nahrávat do souboru (nějakého feedu - což je asi častější) tak to je jiná ...

Editováno 30.4.2014 11:33
Nahoru Odpovědět  +1 30.4.2014 11:31
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Radim Sückr
Redaktor
Avatar
Radim Sückr:

Prostě vypni short_open_tags, stejně jsou k ničemu. :D Myslím, že to dokonce jde udělat i přes .htaccess v Apache.

 
Nahoru Odpovědět  +1 1.5.2014 0:11
Avatar
asanos
Člen
Avatar
Odpovídá na Radim Sückr
asanos:

Tak to máš teoreticky pravdu :D
Jde to myslím i přes ini_set()...

Editováno 1.5.2014 0:21
Nahoru Odpovědět 1.5.2014 0:20
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na asanos
mkub:

polozku na vipnutie short_open_tags najdes v php.ini, tam to zakaz a pouzivaj namiesto tagov <?...?> tagy <?php...?>
a dalsie upozornenie: PHP script ked nemusis ukoncovat, nepis koncovu znacku ?>, PHP ked narazi na koniec suboru, automaticky ju doplni (inak sa moze stat, ked ti editor vlozi na koniec suboru prazdny riadok, tak PHP parser automaticky vygeneruje vystup a moze vzniknut iny problem - problem s headerom...
ale ak je PHP uprostred HTML, tak ukoncovacia znacka je potrebna

 
Nahoru Odpovědět 3.5.2014 13:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.