XML PHP 5 DOM ile varlıkları Numaralı Başlarken

2 Cevap php

Ben burada yeniyim ve gün boyu beni kandırma bir sorum var.

Ben bir site haritası dosyası oluşturmak için DOMDocument sınıfı ile çalışır, sonra cURL ile bir web sitesi kaynak kodunu okur, bir PHP komut dosyası yaptık.

Neredeyse her açıdan bir cazibe gibi çalışıyor. Sorun özel karakterler ile.

Uyumluluk nedeniyle, site haritası dosyaları sayılı kuruluşlar olarak kodlanan tüm özel karakter olması gerekir. Ve bunu elde etmiyorum.

Örneğin, benim girdilerden biri - otomatik sitesi URL'leri okunur ve dosya Site haritası yazdı - olduğunu:

http://www.somesite.com/serviços/redesign/

Kaynak kodu üzerinde göründüğü gibi olmalıdır:

http://www.somesite.com/servi * ç * os/redesign/

Sadece bu. Ama ne yazık ki, ben gerçekten bunu yapmak için nasıl sergiyi değilim.

Kaynak kodu dosya, sunucu başlıklar, vs .. her şey UTF-8 olarak kodlanmış.

Ben XML oluşturmak için DOMDocument ve ilgili uzantıları kullanıyorum. (Temel, DOMDocument, $ obj-> createElement, $ obj-> append_child).

htmlentities gives ç instead of ç str_replace does not work. It makes the character just vanish in the output.

Ben $ obj-> createElement ("loc", $ url) kullanıyordum; benim kodu, ve şimdi ben destek kodlama varlıkları sahip olmak için, $ belge-> createTextNode ($ sayfa) kullanması gerektiğini PHP kılavuzda okudum.

Eh, o da çalışmıyor.

Bu ayrılmak almak için nasıl herhangi bir fikir?

Teşekkürler.

2 Cevap

Ben filtre uzantısı kullanılır:

$ Url = filter_var ($ url, FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH)

Önce kullanın. Bu (Bu RFC uyumlu var bcoz) Ben denedim herhangi diğer çözümlere göre daha iyi bir sonuç yapar.

htmlentities bir 3. argüman = charset kullanmak yani

htmlentities($string,ENT_COMPAT,"UTF-8");