PHP: UTF-8 HTML dönüştürme

2 Cevap php

Ben ayrıştırmak için istediğiniz bir Fransız sitesi var, ama latin-1 (DTM-8) html dönüştürmek sorunlarla çalıştırıyorum.

Sorun, aşağıdaki phpunit test halinde gösterilmektedir:

class Test extends PHPUnit_Framework_TestCase {

    private static function fromHTML($str){
    	return html_entity_decode($str, ENT_QUOTES, 'UTF-8');
    }

    public function test1(){

	    //REMOVE THE SPACE between the '&' and 'nbsp'. SO won't
	    //let me write it without the space
	    $strFrom 	= 'Wanted& nbsp;: les Chasseurs de Tamriel';
	    $strTo 	= 'Wanted : les Chasseurs de Tamriel';
	    $strFrom = self::fromHTML($strFrom);
	    $this->assertEquals($strTo, $strFrom);
    }

    public function test2(){
	    $strFrom 	= 'Remplacement d’Almalexia';
	    $strTo 		= 'Remplacement d’Almalexia';
	    $strFrom = self::fromHTML($strFrom);
	    $this->assertEquals($strTo, $strFrom);
    }

    }

Test2 ince tamamlar. test1 uzay doğru olmadığı gibi başarısız görünüyor, yani ASCII dönüştürülür zaman) bilinmeyen bir karakteri (olarak biter.

Nasıl ben de testleri geçmek sağlamak istiyorsunuz?

2 Cevap

test1 kendi cevap doğru, başarısız değil. Karşılaştırmak dizeleri aynı değildir. "" not bir boşluk çözülür (0x20). Bu bir bölünemez boşluk karakteri ve gibi 0xa0 için çözümlenmiş olur. Eğer strTo kolon önce o karakteri içerdiğinden değiştirmek zaman assertEquals true dönecektir. Tabii ki dosya sadece PERR0_HUNTER mentioned olarak, UTF-8 kodlaması ile kaydedilmiş ama muhtemelen zaten yapıyoruz "'" karakteri kullanmak olduğunu görünce emin olmak gerekir. :)

Sadece küçük bir öneri olarak, sizin. Php dosyası encoding utf8 ayarlanmış olduğundan emin olun, birçok kişi özledim bilmiyorum.