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 |
#2 · Zasláno: 16. 4. 2010, 01:15:40
Nejlépe asi osekat.
Můžeš se inspirovat (nebo ji rovnou použít) metodou Nette\String::fixEncoding() z Nette Frameworku. |
||
vychonar Profil * |
#3 · Zasláno: 16. 4. 2010, 11:00:24
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 * |
#4 · Zasláno: 16. 4. 2010, 12:46:54
Nestačí ten řídící znak 31 nahradit třeba mezerou?
$data2=strtr($data, "\x1f", " "); |
||
vychonar Profil * |
#5 · Zasláno: 16. 4. 2010, 15:34:56
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 * |
#6 · Zasláno: 16. 4. 2010, 16:09:38
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 * |
#7 · Zasláno: 16. 4. 2010, 20:16:04
nakoniec som to narradenie vyriesil tymto
$data = preg_replace("#[\\x00-\\x1f]#msi", ' ', $data); |
||
Časová prodleva: 14 let
|
0