![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.03.2011 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Mam taki XML:
Gdy próbuję go wczytać za pomocą XMLReader przy pomocy takiego kodu:
oczywiście po dojściu do znaku & wywala mi się. Wypisując błędy:
linia 55 w kodzie to
a linia 1274 to
Od dwóch dni próbuję sobie z tym poradzić i nie mogę... Nie mam wpływu na to, że w XMLu zamiast jest . W jaki sposób sobie z tym poradzić. Gdy ręcznie podmieniłem na wszystko ziała jak talala... tylko, że ręczna zabawa odpada, bo pliczek XML ma być importowany automatycznie z serwera co 15 minut... W jaki sposób "podmienić" na w ciągu tak aby XMLReader się nie wysypywał. To samo dotyczy innych zabronionych znaków wymienionych tutaj link. No i jak postąpić gdy dajmy na to część znaków w pliku jest poprawnie zamieniona na , żeby po podmianie nie wyszło nam
Programistą nie jestem, a bawię się w php dla frajdy... Do tej pory wyprodukowałem coś takiego: http://boinc.pl/stats A omawiany problem, powstrzymuje mnie przed dodaniem statystyk wyścigowych... Ten post edytował TomaszPawel 20.12.2011, 13:16:57 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A nie masz wpływu na generowany plik XML ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 42 Dołączył: 25.03.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Znaki specjalne i encje powinieneś umieścić w CDATA przy generowaniu takiego dokumentu.
http://www.w3schools.com/xml/xml_cdata.asp edit: nie doczytałem, że nie możesz zmieniać tego. Ten post edytował qrooel 20.12.2011, 13:50:33 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Przecież napisał, że nie ma wpływu na xml....
użyj str_replace i po sprawie Cytat No i jak postąpić gdy dajmy na to część znaków w pliku jest poprawnie zamieniona na [XML] pobierz, plaintext & , żeby po podmianie nie wyszło nam [XML] pobierz, plaintext && albo & To też użyj str_replace, tylko najpierw jedno str_replace, które zamienie na & a potem już to prawidłowe str_replace, gdzie bedziesz zamieniał niedozwolone znaki na encje. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.03.2011 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
A konkretnie to jakbyś to zaimplementował?
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Za bardzo nie ma tu co implementować, tylko normalnie po ludzku użyć
http://pl.php.net/manual/en/function.str-replace.php |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
po testuj to - wygląda, że działa a nie mam czasu bawić się:
Kod $text = 'daf a& &asd;ŕ&11 co &'; $pattern = '/(?!&#[0-9]+;|&[a-z]+;)&/'; $replace = '&'; echo preg_replace($pattern, $replace, $text); code gdyż przy php zastępuje symbolem specjalnym jak wpisuję w styl "& # 1343;" - bez spacji - ale w code też widzę lipa ;p Ten post edytował zegarek84 20.12.2011, 14:51:09 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:13 |