str_replace &: dönüştürme &

3 Cevap

Ben bir XML dosyasında temsil gereken bir veritabanında bazı veriler var, ancak veri her istek için farklı, yani XML dosyası PHP ile oluşturulur. Örnek amacıyla, en bu db metin diyelim:

Hello & Goodbye

Ben ($example değişkeni ayarlayın) Yukarıdaki oluşturulan XML Hello & Goodbye olarak göstermek almak için aşağıdaki kullanarak denedim:

$example = mb_convert_encoding($example, "utf-8", "HTML-ENTITIES" );

$example = htmlspecialchars_decode($example);

$example = html_entity_decode($example);

$example = str_replace("&", "&", $example);

Bu satırlar bunların düzgün karakter, " gibi, diğer varlıkları yerine, ama & olacaktır. Bu doğru bir çalışma almak için nasıl bir fikir?

3 Cevap

& kendi başına asla izin XML geçersiz bir karakter. Çünkü bunun kullandığınız ne olursa olsun XML kitaplık anında & bunu tercüme edilir olasıdır. Olması gereken yolu - Aksi XML geçerli olmayacaktır.

Sizin kod varlık çözmek için çalışır, böylece sorun değil.

Ben XML çıktı kütüphanesi varlık yeniden kaçan ne olduğunu tahmin ediyorum. Anlamak için bir şey ki bu doğru bir davranıştır. Tırnak işaretleri (tabii ki iç nitelik değerleri hariç) XML belgeleri çıkmamış şeklinde görünür iken hemen hemen tüm bağlamlarda onlar bir varlığın başlangıcı anlamına çünkü imi orada kendi kullanılamaz.

Sizin kod çıktısını okuyarak herhangi bir XML ayrıştırıcı dize değeri "Hello Goodbye ve" bir temsili olarak XML Hello & Goodbye anlayacaksınız.

$example = mb_convert_encoding($example, "utf-8", "HTML-ENTITIES" );

followed tarafından

$example = htmlspecialchars_decode(utf8_encode($example));

benim için çalıştı, bir utf-8 "uyumlu" dize verir.