2011-01-09 9 views
15

मैं एचटीएमएल इकाइयों को एक स्रोत स्ट्रिंग से उनके शाब्दिक चरित्र समकक्ष में परिवर्तित करने की कोशिश कर रहा हूं।html_entity_decode समस्या?

उदाहरण के लिए:

<?php 

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

?> 

इस जबकि ठीक ही, स्क्रीन पर इकाई धर्मान्तरित जब मैं एचटीएमएल कोड को देखो यह अभी भी स्पष्ट इकाई दिखा रहा है। मुझे इसे बदलने की जरूरत है ताकि यह सचमुच इकाई को परिवर्तित कर दे क्योंकि मैं एक HTML पृष्ठ के भीतर स्ट्रिंग का उपयोग नहीं कर रहा हूं।

मैं क्या गलत कर रहा हूं पर कोई विचार? एक UTF-8 वर्ण (एम डैश) को

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

में भी परिवर्तित किया जाना चाहिए ईको लाइन ईमानदार होने के लिए अप्रासंगिक है। $ रूपांतरित अभी भी इसमें इकाई है (मैं एक एपीआई के माध्यम से एक आईफोन में परिवर्तित भेज रहा हूँ)। – mootymoots

+0

हाँ मैंने सोचा; यह समस्या नहीं है। मैंने एक जवाब दिया है। – BoltClock

+0

कोई पैरामीटर के साथ, यह केवल < > & को परिवर्तित करता है। – mario

उत्तर

31

&#8211; नक्शे ताकि आप UTF-8 वर्ण एन्कोडिंग के रूप में निर्दिष्ट करना होगा:

FYI करें मैं एप्पल के पुश अधिसूचना सेवा करने के लिए परिवर्तित स्ट्रिंग भेज रहा हूँ:

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

जब भी मैं उस पर स्रोत देखता हूं तब भी मुझे इकाई मिलती है ...? – mootymoots

+0

@mootymoots: मैंने इसका परीक्षण किया, मुझे इकाई के बजाय कच्चा चरित्र मिला। आश्चर्य है कि यह और क्या हो सकता है ... HTML दस्तावेज़ का एन्कोडिंग शायद? – BoltClock

+0

यह पृष्ठ पर परिवर्तित है - लेकिन स्रोत में नहीं ...? क्रोम – mootymoots

4

का उपयोग करके देखें चारसेट

<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; 
?> 

यहसे काम करना चाहिएऔर इसे स्रोत