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
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

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


Chodziło mi o to, czy już po zamianie na encje nie pozostaje jakiś znak, który skutkuje takim komunikatem (on jest przyczyną, a nie encje).
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(trueblue @ 19.08.2020, 13:04:18 ) *
Chodziło mi o to, czy już po zamianie na encje nie pozostaje jakiś znak, który skutkuje takim komunikatem (on jest przyczyną, a nie encje).

Wg komunikatu w tagu tym mogą być tylko cyfry i litery więc znak np & który jest częścią znaku powoduje błąd.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





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

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


Cytat(luis2luis @ 19.08.2020, 13:19:40 ) *
Wg komunikatu w tagu tym mogą być tylko cyfry i litery więc znak np & który jest częścią znaku powoduje błąd.

Przeczytaj jeszcze raz to, co napisałem wyżej. Jeżeli jest tak jak mówisz, to ten system ma kompletnie bezsensowną walidację. Walidacja oparta na reprezentacji wartości jest idiotyczna. Jestem na 99% pewien, że nie o to chodzi.

Dobrze, więc z tego co mówisz, ten system pozwala na litery i cyfry. Czy testujesz na takiej wartości, tj. na literach i cyfrach? Bo jak wstawiłem powyższy przykład ze świnką, to testowałeś na nim, a przecież tam jest spacja. Spacja nie należy ani do liter, ani do cyfr, prawda?

Zrób prosty test - spróbuj wstawić wartość abc jako Description i zobacz czy przyjmie. Pewnie przyjmie. To teraz spróbuj wstawić wartość & #97;& #98;& #99; (usuń spacje - musiałem je wstawić, bo ten durny system forum ślepo zamienia wszystko), która jest po prostu inaczej zapisanym abc.

Ten post edytował SmokAnalog 19.08.2020, 13:21:41
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: 7.10.2025 - 23:21