Xml Yasadışı karakter

0 Cevap php

Ben kaynaklardan bir dizi ithal edilmiş verilere dayalı bir Xml site haritası üreten bir PHP dosyası var. Benim site haritası şu anda iyi ancak bunu çıkarmak için mücadele ediyorum nedeniyle alınan verilerin bir satırda yasadışı bir karakter oluşmuş değildir.

Karakteri 'kare' ya da üst simge 2 temsil görünüyor, ve bir kare olarak temsil edilir. Ben? Ancak bir olarak gösterilen bir hex editör içine bu yapıştırarak denedim, ve hex kodu da tekabül?. Ben de bu karakteri çıkarırken hiçbir kombinasyonu ile, tüm hedef kodlamalar için tüm kaynak kodlamalar dönüştürmek için iconv kullanarak denedim.

Ben de olmayan ASCII karakterleri kaldırmak için aşağıdaki işlevi vardır:

function stripInvalidXml($value)
{
    $ret = "";
    $current;
    if (empty($value)) 
    {
        return $ret;
    }

    $length = strlen($value);
    for ($i=0; $i < $length; $i++)
    {
        $current = ord($value{$i});
        if (($current == 0x9) ||
            ($current == 0xA) ||
            ($current == 0xD) ||
            (($current >= 0x20) && ($current <= 0xD7FF)) ||
            (($current >= 0xE000) && ($current <= 0xFFFD)) ||
            (($current >= 0x10000) && ($current <= 0x10FFFF)))
        {
            if($current != 0x1F)
            {
                $ret .= chr($current);
            }
        }
        else
        {
            $ret .= " ";
        }
    }


    return $ret;
}

Ancak bu yine çıkarmadan değildir. Ben kod aracılığıyla adım yasadışı karakteri dışarı genişletilir hata ayıklama penceresi tutulmaları. Onunla sorunlar yaşıyor dize (doğru yapıştırır umuyor) aşağıda olduğu

251gm-50

Ben XML nesil noktasında yapılması gerekiyor bu yüzden ithal veriler üzerinde çok az kontrole sahip - bu karakterini kaldırmak ve meydana gelen bu formu çok takdir önleyecek bir fonksiyonu üzerinde herhangi bir fikir.

EDIT

Yazdıktan sonra ben karakter doğru görünmüyor görebilirsiniz. Tutulmalar pencerede görüntülerken zaman & gibi görünür # 65535; (Boşluksuz - Ben boşluklar bırakırsanız benziyor karakter, işler)

0 Cevap