Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Generowanie pliku XML i wieczny problem z Polskimi znakami.
luis2luis
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

Ostrzeżenie: (0%)
-----


Wiecznie mam problem z Polskimi znakami.
Radze sobie jakoś z tym, ale nie rozumie wcale zagadnienia.

Leciwy już iconv() nigdy nie udało mi się poprawnie uruchomić (IMG:style_emoticons/default/smile.gif)
Jest jeszcze utf8_encode() i utf8_decode() też nie wiem po co to jest w sumie jak jest iconv() ktory powinien takie sprawy załatwić (IMG:style_emoticons/default/smile.gif)
Dane z bazy pobierane są poprawnie w formacie UTF-8.

  1. $result_xml = utf8_encode($result_xml);
  2.  
  3. $dom = new DOMDocument('1.0', 'UTF-8');
  4. $dom->preserveWhiteSpace = FALSE;
  5. //$dom->loadXML(utf8_encode(clearExport($result_xml))); //probowalem tez tak
  6. $dom->loadXML(clearExport($result_xml));
  7. $dom->save('xml/brandbank_.xml');//'.date("YmdHis").'
  8.  
  9. //kasuje z xmla znaki które kolidują, szkoda, że metoda save nie dba o to :)
  10. function clearExport($value) {
  11. //$value = str_replace(';', ',', $value);
  12. $value = str_replace('\"', "'", $value);
  13. //$value = str_replace('"', "'", $value);
  14. $value = str_replace('*', "", $value);
  15. $value = str_replace('&', "", $value);
  16.  
  17. //$liczba = preg_replace('#[^0-9\.\-]#', '', $liczba);//tyo cyferki i kropka
  18. return $value;
  19. }
  20.  
  21.  


Mam też takąfunkcje, która wygenerowąła mi poprawny xml, jednak nie wiem czy bedzie to dobre rozwiazanie. Jak pojawi się jakiśinny znak spoza tej tablicy bedzie problem.


  1. function polskie_znaki($string) {//zamienia polskie literki z ajaxa; $przelocznik
  2.  
  3. $specialChars = [
  4. 'Ä?',
  5. 'Ä?',
  6. 'Ĺş',
  7. 'Ĺą',
  8. 'Ĺź',
  9. 'Ĺ?',
  10. 'Ĺ?',
  11. 'Ĺš',
  12. 'Ä?',
  13. 'Ä?',
  14. 'Ä?',
  15. 'Ę',
  16. 'Ĺ?',
  17. 'Ń',
  18. 'Ĺ?',
  19. 'Ł',
  20. 'Ăł',
  21. 'Ă?',
  22. ];
  23.  
  24. $polishHtmlCodes = [
  25. 'ą',
  26. 'Ą',
  27. 'ź',
  28. 'Ź',
  29. 'ż',
  30. 'Ż',
  31. 'ś',
  32. 'Ś',
  33. 'ć',
  34. 'Ć',
  35. 'ę',
  36. 'Ę',
  37. 'ń',
  38. 'Ń',
  39. 'ł',
  40. 'Ł',
  41. 'ó',
  42. 'Ó',
  43. ];
  44.  
  45. return str_replace($specialChars, $polishHtmlCodes, $string);
  46. }
  47.  


Ten post edytował luis2luis 19.08.2020, 09:24:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie do końca rozumiem o co Ci chodzi.

Zrobiłem mały test z takim plikiem XML (input.xml):

  1. <?xml version="1.0"?>
  2. <catalog>
  3. <book>
  4. <title>Łódź w śwince źródlanej</title>
  5. </book>
  6. </catalog>


  1. $xml = file_get_contents('input.xml');
  2. $dom = new DOMDocument('1.0', 'UTF-8');
  3. $dom->loadXML($xml);
  4. $dom->save('output.xml');


Wynik w output.xml:

  1. <?xml version="1.0"?>
  2. <catalog>
  3. <book>
  4. <title>&#x141;&#xF3;d&#x17A; w &#x15B;wince &#x17A;r&#xF3;dlanej</title>
  5. </book>
  6. </catalog>


Wygląda na to, że działa to prawidłowo. O ile mi wiadomo, polskie (i jakiekolwiek inne akcentowane) znaki nie powinny się pojawiać w pliku XML. Ale plik zapisał te znaki poprawnie w formie encji szesnastkowych.
Go to the top of the page
+Quote Post
luis2luis
post
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

Ostrzeżenie: (0%)
-----


Cytat(SmokAnalog @ 19.08.2020, 11:04:18 ) *
Wynik w output.xml:

  1. <?xml version="1.0"?>
  2. <catalog>
  3. <book>
  4. <title>Łódź w śwince źródlanej</title>
  5. </book>
  6. </catalog>


Wygląda na to, że działa to prawidłowo. O ile mi wiadomo, polskie (i jakiekolwiek inne akcentowane) znaki nie powinny się pojawiać w pliku XML. Ale plik zapisał te znaki poprawnie w formie encji szesnastkowych.


Dziekuje bardzo za fatygę. Również otrzymałem taki wynik, jednak system, który pobiera ten plik odrzuca go.

Dostałem komunikat:
Cytat
As we checked, the error was caused by the contents in Description, which should only include numbers and letters


Czyli potrzebują tylko literki i cyfry (IMG:style_emoticons/default/smile.gif) Więc można zapisać ten plik xml w innym formacie niż encji szesnastkowych?

Ten post edytował luis2luis 19.08.2020, 10:31:18
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:45