2011-02-02 11 views
13

मैं एक ऐसी फाइल बना रहा हूं जो स्थानीय उपयोगकर्ता के कंप्यूटर पर सहेजा जा सके (वेब ​​ब्राउजर में प्रस्तुत नहीं)।एचटीएमएल इकाइयों को – को अपने चरित्र समकक्षों में कैसे परिवर्तित करें?

मैं वर्तमान में html_entity_decode का उपयोग कर रहा हूं, लेकिन यह – (जो एन-डैश है) जैसे अक्षरों को परिवर्तित नहीं कर रहा है और यह सोच रहा था कि मुझे किस अन्य फ़ंक्शन का उपयोग करना चाहिए।

उदाहरण के लिए, जब फ़ाइल को ndash या सिर्फ एक के बजाय सॉफ़्टवेयर में आयात किया जाता है - यह – के रूप में दिखाई देता है। मुझे पता है कि मैं str_replace का उपयोग कर सकता हूं, लेकिन यदि यह इस चरित्र के साथ हो रहा है, तो यह डेटा गतिशील होने के बाद कई अन्य लोगों के साथ हो सकता है।

उत्तर

30

आपको लक्षित चरित्र सेट को परिभाषित करने की आवश्यकता है। – डिफ़ॉल्ट आईएसओ -885 9 -1 वर्ण सेट में एक मान्य वर्ण नहीं है, इसलिए यह डीकोड नहीं किया गया है। उत्पादन चारसेट के रूप में UTF-8 परिभाषित करें और यह डिकोड देगा:

echo html_entity_decode('–', ENT_NOQUOTES, 'UTF-8'); 

सभी संभव पर हैं, तो आप HTML संस्थाओं के साथ शुरू करने के लिए से बचना चाहिए। मुझे नहीं पता कि वह एन्कोडेड डेटा कहां से आता है, लेकिन यदि आप इसे डेटाबेस या अन्य जगहों में संग्रहीत कर रहे हैं, तो आप इसे गलत कर रहे हैं। हमेशा डेटा यूटीएफ -8 एन्कोडेड स्टोर करें और केवल HTML इकाइयों में कनवर्ट करें या अन्यथा आवश्यक होने पर आउटपुट के लिए बचें।

+0

अच्छी कॉल। मैंने सोचा कि यह अजीब बात है कि 'get_html_translation_table()' द्वारा अनुवाद तालिका आउटपुट '–' और '—' अनुपलब्ध प्रतीत होता था। लेकिन यह मेरे लिए नहीं हुआ था कि यह डिफ़ॉल्ट आउटपुट वर्णमाला की वजह से था। –

+0

मैं डेटाबेस में डेटा स्टोर करने के लिए वर्डप्रेस का उपयोग कर रहा हूँ। – Cofey

0

utf8_encode() का उपयोग कर फ़ाइल को यूटीएफ -8 के रूप में एन्कोड करें। फिर आपको कुछ भी बदलने/हटाने की ज़रूरत नहीं है।

+0

मैंने अपने हेडर में वर्णमाला = utf-8 जोड़ने की कोशिश की "हेडर ('सामग्री-प्रकार: टेक्स्ट/कैलेंडर; charset = utf-8');" और utf8_encode ($ डेटा) का उपयोग कर फ़ाइल में प्रतिबिंबित कोड भी चलाया, लेकिन इससे कोई फर्क नहीं पड़ता। कोई विचार? – Cofey

0

क्या आप अक्षरों को स्टोरेज के लिए HTML इकाइयों में बदलने और बाद में पुनर्प्राप्ति करने की कोशिश कर रहे हैं?

htmlentities('–', ENT_COMPAT, 'UTF-8'); 
// Returns "–" 

यदि मैंने आपका प्रश्न गलत तरीके से पढ़ा है, तो कृपया मुझे बताएं।

15

mb_convert_encoding() का प्रयास करें:

$string = "n–dash"; 
$output = mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES'); 
echo $output; 
1

अद्यतन

function decode_characters($data) 
{ 
    $text = $data; 
    $enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1"); 
    $resutl_characters = iconv($enc, "UTF-8", $text); 
    return $resutl_characters; 
} 
0

मैं इसी तरह की समस्या थी। मैं HTML पैराग्राफ निकालने और डेटाबेस में सहेज रहा था लेकिन पाठ सभी HTML वर्णों के साथ सहेज जाएगा। mb_convert_encoding() का उपयोग करने में मदद नहीं मिली। हालांकि, html_entity_decode($str); काम किया!

संबंधित मुद्दे

 संबंधित मुद्दे