Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML + PHP] Niechciane znaki do usunięcia w XML
sniver
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Jakiś czas temu natrafiłem na pewien ciąg znaków, który trochę mi bruździ w życiu...

Problem wynika z tego że został dodany jakiś produkt do sklepu z opisem skopiowanym z bliżej nieznanego mi edytora tekstu. To z koleii poskutkowało dodaniem jakiś znaków specjalnych. W mcedit pod konsolą widzę ten znak jako ^B z tłem na czarno. Z koleii w notatniku pod windowsem jako "przechylony daszek":

(IMG:http://www.tsoft.pl/gfx/private/dziwne-znaki.jpg)

Jak coś takiego wyeliminować "hurtowo"? Nie ukrywam że od pewnego czasu występuje wiele podobnych "dodatków" i staram się je eliminować, ale zrozumiałem że jest to jakaś "rodzina" dopisków.

Może jakaś wskazówka jak to wyczyścić - to i temu podobne?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Mógłbyś przy pomocy wyrażeń regularnych (preg_replace) usunąć z tekstu wszystkie znaki, które należą do następujących grup: znaki kontrolne (te, dla których podano skrót), U+0080 - U+00A0 + wszystkie znaki spoza palety BMP.
Go to the top of the page
+Quote Post
sniver
post
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Odgrzebuję temat bo ponownie się z nim zetknąłem.
Być może komuś się przyda - jak ja miałem ten problem to nakierował mnie post crozin'a. Znalazłem gotowe rozwiązanie w pare minut.

Dodaje bo może komuś się przyda (IMG:style_emoticons/default/smile.gif)

  1.  
  2. function utf8_for_xml($string) {
  3. return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
  4. }
  5.  
  6. $plik = 'tmp/zly_i_niedobry_plik.xml';
  7. $file = implode(file($plik ));
  8.  
  9. $string = utf8_for_xml($file);
  10. $string = str_replace(array("&", "&"), array("&", "&"), $string); // W adresach nazw plików wystąpiły znaczki & - z czym simplexml nie potrafił sobie poradzić...
  11.  
  12. $xml = simplexml_load_string($string, null, LIBXML_NOCDATA );
  13.  
  14. echo '<pre>';
  15. var_dump( $xml );
  16. echo '</pre>';
  17.  


Dziękuję - temat może byc do zamknięcia!
Go to the top of the page
+Quote Post

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 - 14:10