DOMDocument PHP kodlama

3 Cevap php
<tag>
Алекс М
</tag>

Ben DOMDocument fonksiyonlarını kullanarak aşağıdaki kodun içeriği almak için çalıştığınızda, bu gibi bir şey verir:

ÐÐ»ÐµÐºÑ Ðœ

Ben ancak başarılı olamadı mb_convert_encoding, iconv ve utf8_encode kullanarak, farklı değerler (UTF-8, ISO-8859-1) için DOMDocument kodlamasını ayarlama denedim.

Nasıl yerine "DD» ÐμÐ º n Doe "nin" Алекс М "alabilirim?

EDIT: Giriş curl yüklü bir sayfa geliyor. Ben çıktı benim tarayıcınıza sayfa içeriği, karakterler düzgün ekrana geldiğinde (yani ben girdi sorundur şüpheliyim).

3 Cevap

Deneyin:

$string = file_get_contents('your-xml-file.xml');
$string = mb_convert_encoding($string, 'utf-8', mb_detect_encoding($string));
// if you have not escaped entities use
$string = mb_convert_encoding($string, 'html-entities', 'utf-8'); 
$doc = new DOMDocument();
$doc->loadXML($string);

Ben DomDocument ayrıştırmak için XPath kullandıktan sonra benzer bir sorun vardı ve bu okuduktan sonra

https://bugs.php.net/bug.php?id=32547

Ben böyle çözülür

// Workaround because PHP 5.2.x has encoding problems, when we 
// update to PHP 5.3 this line is not necesserry any more
$content = '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' . $content;

// Creating new DOM document and loading HTML content
$dom_document = new DOMDocument('1.0', 'UTF-8');
$dom_document->substituteEntities = TRUE;
$dom_document->loadHTML($content);

Eğer etiketleri xml başlık ekle - Bu deneyin:

$a = new DOMDocument ();
$a->loadXml ('<?xml version="1.0" encoding="UTF-8"?><tag>Алекс М</tag>');
print htmlspecialchars ($a->saveXml ());