Mam dwa problemy:
1. Pierwszy problem - formatowanie xml'a ($formatOutput)
ok, więc zacznę od dobrej wiadomośći:
<?php $xml = DOMDocument::loadXML('<html><head><title>tytuł</title></head><body><p>treść</p></body></html>'); $xml->formatOutput = true; $xml->encoding = 'utf-8'; ?>
Dostaję wynik taki jaki oczekiwałem:
(widzę, że forum nie pokazuje wcięć, w każdym razie wcięcia są takie jakie być powinny)
<?xml version="1.0" encoding="utf-8"?> <html> <head> <title>tytuł</title> </head> <body> <p>treść</p> </body> </html>
Natomiast problem pojawia się, gdy pomiędzy jakikolwiek element wstawię choćby jeden znak, poniżej dodałem spację po <head>:
<?php $xml = DOMDocument::loadXML('<html><head> <title>tytuł</title></head><body><p>treść</p></body></html>'); $xml->formatOutput = true; $xml->encoding = 'utf-8'; ?>
Wynik dostaję taki:
<?xml version="1.0" encoding="utf-8"?> <html> <head><title>tytuł</title></head><body><p>treść</p></body></html>
I to jest pierwszy problem - teraz przestał formatować.
2. Drugi problem - krzaki przy uzyciu saveHTML()
<?php $xml = DOMDocument::loadXML('<html><head><title>tytuł</title></head><body><p>treść</p></body></html>'); $xml->formatOutput = true; $xml->encoding = 'utf-8'; ?>
A wynik:
(no kurka nie da się tego pokazać, bo forum automatycznie konwertuje &#xxx; na znaczki, tak więc wlepiłem "&-" zamiast "&")
<html> <head><title>tytu&-#322;</title></head> <body><p>tre&-#347;&-#263;</p></body> </html>
Wszystkie dwubitowce zostają zakodowane... abstrahuje już że nie takiego formatowania się spodziewałem.
- php 5.0.4
- libxml 2.6.11
- Windows XP
- Ilość godzin przed komputerem dzisiaj: 11