2011-01-09 22 views
15

HTML varlıklarını bir kaynak dizeden harf karakterlerine eş değer dönüştürmeye çalışıyorum. Örneğinhtml_entity_decode sorunu mu var?

: Ben hala açık varlık gösteren HTML kodu baktığınızda

<?php 

$string = "Hello &#8211; World"; 
$converted = html_entity_decode($string); 

?> 

bu iken haklı olarak, ekrandaki varlık dönüştürür. Bunu, bir HTML sayfasındaki dizeyi kullanmadığım için öğeyi tam anlamıyla dönüştürecek şekilde değiştirmem gerekiyor.

yanlış yapıyorum herhangi bir fikir? UTF-8 karakteri (uzun tire) için

$payload['aps'] = array('alert' => $converted, 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 
+0

yankı hat dürüst olmak alakasız da dönüştürülmesi gerekir. Dönüştürülen varlık hala var (ben bir API aracılığıyla bir iPhone'a dönüştürülüyor). – mootymoots

+0

Evet düşündüm; Bu sorun değil. Bir cevap verdim. – BoltClock

+0

hiçbir parametre ile, sadece < > & geri dönüştürmek gelmez. – mario

cevap

31

&#8211; haritalar böylece UTF-8 karakter kodlaması olarak belirtmek gerekir:

Bilginize ben Apple'ın Push bildirim hizmetine dönüştürüldüğü dize gönderiyorum:

$converted = html_entity_decode($string, ENT_COMPAT, 'UTF-8'); 
+0

Hala bu kaynağı görüntülediğimde varlığı alıyorum ...? – mootymoots

+0

@mootymoots: Test ettim, varlığın yerine ham karakteri aldım. Başka ne olabilir diye merak ediyorum ... HTML belgesinin kodlaması belki de? – BoltClock

+0

sayfadaki dönüştürülür, ancak kaynakta değil ...? Krom görünümlü – mootymoots

4

deneyin kullanarak charset

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<?php 
$string = "Hello &#8211; World"; 
$converted = html_entity_decode($string , ENT_COMPAT, 'UTF-8'); 
echo $converted; 
?> 

BuçalışmalıdırVe kaynağından