2012-12-30 58 views
7

में कनवर्ट करें मैं ऊपरी-केस HTML इकाई वर्णों को उनके लोअरकेस में कैसे परिवर्तित कर सकता हूं?PHP: HTML-इकाई-एन्कोडेड अपरकेस वर्ण को लोअरकेस

$str = "É"; //É 

$res = strtolower($str); 

echo $res; 

http://codepad.viper-7.com/Zf3RTe

+0

यह सिर्फ एक टाइपो था। – Martin

उत्तर

7
$str = "É"; //É 

$res = mb_strtolower(html_entity_decode($str,ENT_COMPAT|ENT_HTML401,'UTF-8'),'UTF-8'); 

echo $res; 
+0

'चेतावनी: html_entity_decode() पैरामीटर 2 लंबे होने की अपेक्षा करता है, पंक्ति 4 पर/in/F6TSA में दी गई स्ट्रिंग, http://3v4l.org/F6TSA –

+0

अब PHP 5.4+ में काम करता है, 5.0-5.3 में एक नोटिस उत्पन्न करता है ('अपरिभाषित स्थिर ENT_HTML401' का उपयोग): http://3v4l.org/uWbbu –

+0

अच्छी तरह से, मैंने पहले –

1

hexit दशमलव में और 32 को जोड़ने के लिए, hexit वापस करने के लिए परिवर्तित कन्वर्ट।


या mbstring का उपयोग कर:

$res = mb_strtolower(mb_convert_encoding($str, 'UTF-8', 'HTML-ENTITIES'), 'UTF-8') 
+0

यह अपरकेस से लोअरकेस तक पहुंचने के लिए 32 जोड़ता है। – irrelephant

+0

क्या यह केवल ASCII के लिए काम नहीं करता है? –

+0

@irrelephant: हाँ यह है, धन्यवाद। –

8

बस इसे के लिए सही समारोह का उपयोग करें:

$strLower = mb_strtolower($str, 'HTML-ENTITIES'); 

PHP Multibyte String extensionDocs HTML निकाय (list of all supported encodingsDocs देखें) के लिए एक एन्कोडिंग है।

+1

आह! अच्छा है, तोड़ने के लिए कम कोड! –

0

मेरे सर्वर पर, मेरे पास mbstring एक्सटेंशन इंस्टॉल नहीं है। एक बेहतर, क्रॉस-सर्वर समाधान के लिए आपको इसका उपयोग करना चाहिए:

echo htmlentities(strtoupper(html_entity_decode($str)));