Autor Zpráva
vychonar
Profil *
spracovavam jedno xml pomocou simplexml ale ta mi vsak hodi chybu:
parser error : PCDATA invalid Char value 31


trochu som googlil a vyzera ze v tom xml je non-utf8 (alebo Invalid byte sequences http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences ) znak. Inak je dokument v utf8. Otazka je cim to prefiltrovat aby tam tie nevalidne bytove sekvencie neboli?

Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
Majkl578
Profil
Nejlépe asi osekat.
Můžeš se inspirovat (nebo ji rovnou použít) metodou Nette\String::fixEncoding() z Nette Frameworku.
vychonar
Profil *
bohuzial simple xml mi to nezoberie ani ked to prebehnem cez funkciu
$data2= iconv('UTF-16', 'UTF-8//IGNORE', iconv('UTF-8', 'UTF-16//IGNORE', $data));

teda ze by nieco ine sposobovalo tu hlasku "PCDATA invalid Char..." ?
Kajman_
Profil *
Nestačí ten řídící znak 31 nahradit třeba mezerou?
$data2=strtr($data, "\x1f", " ");
vychonar
Profil *
no to by slo lenze chcem aby to fungovalo komplexne...nacita sa ine xml a tam to bude napriklad iny znak....ked uz tak nahradit vsetky...lenze neviem kolko ich je a ake su
Kajman_
Profil *
Tak si asi můžete nahradit všechny řídící znaky, kromě povolených (nejpíš bílé znaky - oba entery a tabulár - x0a x0d x09).

Plus k tomu můžete přidat ten iconv, který ošetří znaky nad x80.
vychonar
Profil *
nakoniec som to narradenie vyriesil tymto
$data = preg_replace("#[\\x00-\\x1f]#msi", ' ', $data);

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:

0