Neden php DOM ayrıştırma charset etkiler?

2 Cevap php
$dom = new DOMDocument();
$dom->loadHTML($string);
$dom->preserveWhiteSpace = false;
$elements = $dom->getElementsByTagName('span');
$spans = array();
foreach($elements as $span) {
	$spans[] = $span;
}
foreach($spans as $span) {
	$span->parentNode->removeChild($span);
}
return $dom->saveHTML();	
//return $string;

Ben dizesini ayrıştırmak için bu kodu kullandığınızda bu kodlama değiştirir ve return $string uncommented zaman semboller aynı gösterilmemiştir. Neden charset değişikliğini önlemek için nasıl o kadar ve

Ile

2 Cevap

Ne yazık ki, bu orijinal belgenin kodlamasını bilen sürece DOMDocument otomatik olarak HTML öğeleri tüm karakterleri dönüştürmek olacak gibi görünüyor.

Görünüşe göre, bir seçenek orijinal dize içerik türü / kodlama ile <meta> etiketi eklemek için, ama bu aynı zamanda çıkışında mevcut olacağı anlamına gelir. Çıkarmadan bu kadar kolay olmayabilir.

Aklıma başka bir seçenek elle böyle bir kodu kullanarak, HTML varlıkları çözmektir:

$trans = array_flip(get_html_translation_table(HTML_ENTITIES));
unset($trans["&quot;"], $trans["&lt;"], $trans["&gt;"], $trans["&amp;"]);
echo strtr($dom->saveHTML(), $trans);

Bu bir ciddi çirkin bir çözümdür, ama ben farklı bir HTML çözümleyici kullanarak dışında başka bir şey, düşünemiyorum. (