Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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?


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
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 winksmiley.jpg
Jeśli nie chcesz mieć problemów z niektórymi znakami (znaczniki HTML, cudzysłów, apostrof, itp), zamykaj tekst w sekcji CDATA.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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ć...


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
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ć.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 20:38