Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> xmlwriter i encje
czachor
post
Post #1





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


Witam,
mam pytanie do osób używających rozszerzenia XMLWriter. Mam problem, przy użyciu metody:
  1. <?php
  2. $xmlWriter->startElement('seg');
  3. $xmlWriter->text('jakiś ciąg z 'apostrofem'');
  4. $xmlWriter->endElement();
  5. ?>

wynik jest prosty:
Kod
<seg>jakiś ciąg z 'apostrofem'</seg>


Chcę do tego użyć htmlspecialchars:
  1. <?php
  2. $xmlWriter->startElement('seg');
  3. $xmlWriter->text(htmlspecialchars('jakiś ciąg z 'apostrofem'', ENT_QUOTES));
  4. $xmlWriter->endElement();
  5. ?>

wynik jest zaskakujący dla mnie:
Kod
<seg>jakiś ciąg z &amp;quot;apostrofem&amp;quot;</seg>


Nie mam pojęcia, dlaczego tak się dzieje... Co tu jest nie tak? Czy może ja czegoś nie rozumiem?
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Funkcja htmlspecialchars z flagą ENT_QUOTES zamienia Ci ' (apostrof) na & # 039 ; (oczywiście bez spacji). Do tego dochodzi zamiana & z nowego ciągu na $ apm ; i stad Twój problem.
Napisz co chcesz uzyskać, ponieważ może nie tędy droga (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Jeśli nie chcesz mieć problemów z niektórymi znakami (znaczniki HTML, cudzysłów, apostrof, itp), zamykaj tekst w sekcji CDATA.
Go to the top of the page
+Quote Post
czachor
post
Post #3





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


Zgadza, się, nie na &quot; tylko na ' - mój błąd. Wszystko jest jasne, tylko nie mogę zrozumieć, dlaczego & jest zmieniane na &amp; - wygląda to jak podwójne użycie tej funkcji. Normalnie
  1. <?php
  2. htmlspecialchars(''', ENT_QUOTES);
  3. ?>
zwróci
Kod
'
natomiast używając tego w xmlWriter zamienia na ' po czym & zamienia jeszcze na &amp; (ostatecznie ciąg wygląda: &amp;#039;) co moim zdaniem nie powinno się dziać...
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Zamiast htmlspecialchars użyj CDATA (są do tego funkcje w XMLWriter) i będzie wszystko działać.
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: 23.08.2025 - 23:44