DomDocument gelen nodeValue PHP garip karakterler dönen

3 Cevap php

Yani get_elements_by_tag_name('p'); HTML sayfaları ayrıştırmak için çalışıyor ve paragraflar (<p>) kullanarak arıyorum

Sorun $element->nodeValue kullandığınızda, bu garip karakterler dönen olmasıdır. Belge bir DOMDocument yerleştirmeden sonra kıvırmak kullanarak $ html içine ilk yüklenir.

Ben charsets ile ilgisi yoktur eminim.

İşte yanıtı bir örnek: "aujourdà ¢  €  ™ hui".

Şimdiden teşekkürler.

3 Cevap

Bu bir kodlama konudur. UTF-8 kodlamasını ayarlama açıkça deneyin.

Bu yardımcı olmalıdır: http://devzone.zend.com/article/8855

Ben orijinal metin UTF-8 olmasına rağmen UTF-8 dönüşüm zorlayarak bu sabit:

$text = iconv("UTF-8", "UTF-8", $text);
$dom = new SmartDOMDocument();
$dom->loadHTML($webpage, 'UTF-8');
.
.
echo $node->nodeValue;

PHP garip olduğunu :)

Ben aynı sorunları vardı ve şimdi loadHTML () artık 2 parametre alır fark, bu yüzden farklı bir çözüm bulmak zorundaydı. Benim DOM kütüphanede aşağıdaki işlevi kullanarak, benim HTML içeriğini korkak karakterleri kaldırmak için başardı.

private static function load_html($html)
{
    $doc = new DOMDocument;
    $doc->loadHTML('<?xml encoding="UTF-8">' . $html);

    foreach ($doc->childNodes as $node)
        if ($node->nodeType == XML_PI_NODE)
            $doc->removeChild($node);

    $doc->encoding = 'UTF-8';

    return $doc;
}