DOMDocument ASCII kontrol karakterleri için güzel olmak nasıl ulaşırım?

2 Cevap php

Ben ayrıştırma am HTML belgesi bazı ASCII kontrol kodları içerir. Ben bu gibi, düğüm içinde ASCII kontrol karakterleri bulduğunda PHP'nin DOMDocument çözümleyici metin düğümlerini keser fark

Device Control 0x13

End of Medium 0x19

File Separator 0x1C

Group Separator 0x1D

Bu bir hata ya da bir özellik mi? Aksi DOMDocument hareket için herhangi bir yolu var mı? Ben DOM işleme önce bu karakterleri kaldırmak için başvurdu, ama bu doğru çözüm olup olmadığını merak ediyorum.

2 Cevap

Muhtemelen bir hata ve bir özellik hem de.

XML 1.0 very restrictive bunu kabul edecek ASCII kontrol karakterleri ile ilgili. Yani DOMDocument kesiliyor kendinize sizi korumak için çalışıyor gibi görünüyor (bu bir sorun bazı gösterge dönmelidir rağmen, bu yüzden bu bir hata derim).

XML 1.1 less restrictive olduğu; buna izin vermez tek şey NUL olduğunu. Yani, olası bir çözüm bunun 1,1 yönetilmesi gerektiğini bilir böylece DOMDocument nesnesini yapılandırmak için olduğunu.


Düzenleme: looks like Eğer DOMDocument kurucusuna XML sürüm numarasını geçirebilirsiniz (ama ben bir PHP programcısı değilim, bu yüzden doğru dokümanlar okuyorum bilmiyorum).


Düzenleme 2: Ben sadece sorunuzu tekrar okudum, ve ayrıştırma, inşa değil fark. Eğer giriş için geçerli 1.1 prolog Önlerine, bu geçici bir çözüm olmalıdır. Ya da belki doğru sürüm numarası ile DOMDocument oluşturarak, bu prolog olmadan doğru ayrıştırmak.

Kdgregory izin verilen karakterler hakkında ne dedi eklemek için, bu kontrol karakterleri sadece geçersiz XML, aynı zamanda SGML değildir. Yani eski HTML veya XHTML, hiç bir HTML belgesinde bu karakterlerden herhangi ayrıştırmak mümkün olacak değiliz.

(Ve ben neden isteyeyim hiçbir fikrim yok. Binary veri ait değil [X] [HT] ML.)