2014-05-13 4 views
6

मेरे पास पूंजीकृत सभी अक्षरों के साथ एक स्ट्रिंग है। मैं ucwords() और mb_strtolower() फ़ंक्शंस का उपयोग केवल स्ट्रिंग के पहले अक्षर को कैपिटल करने के लिए कर रहा हूं। लेकिन मुझे कुछ समस्याएं आ रही हैं जब किसी शब्द के पहले अक्षर में उच्चारण होता है। उदाहरण के लिए:ucwords उच्चारण अक्षरों को कैपिटल करने नहीं

ucwords(mb_strtolower('GRANDE ÁRVORE')); //outputs 'Grande árvore' 

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

+1

केस रूपांतरण आपके विचार से कठिन है। क्या आपने शीर्षक मोड के साथ ['mb_convert_case()'] (http://php.net/manual/en/function.mb-convert-case.php) आज़माया था? – Maerlyn

+0

यह मेरे लिए ठीक काम करता है: 'गूंज ucwords (mb_strtolower (' ग्रैंड अरवर '));' परिणाम 'ग्रांडे आर्वोर'। त्रुटियों को प्रदर्शित करने की कोशिश करें और हमें बताएं कि क्या कोई त्रुटि दिखाई देती है। – Chorochrondochor

+0

@Chorochrondochor नोप मेरे लिए भी काम नहीं करता है। –

उत्तर

7

ucwords multibyte तार और/या गैर- ASCII तार से निपटने के लिए कोर पीएचपी कार्य करता है जो आनंदपूर्वक गैर- ASCII या गैर लैटिन -1 एन्कोडिंग से अनजान है में से एक है *, आप multibyte बारे में पता mb_convert_case उपयोग करना चाहिए:।

mb_convert_case($str, MB_CASE_TITLE, 'UTF-8') 
// your string encoding here --------^^^^^^^ 

* मैं पूरी तरह यकीन नहीं है कि इसमें केवल ASCII के साथ या कम से कम लैटिन -1 के साथ काम करता नहीं हूँ, लेकिन मैं भी पता लगाने के लिए परेशान नहीं होता।

+0

यह मेरे लिए ठीक काम करता है, धन्यवाद! –

-1

ucwords उच्चारण वर्ण को पहचान नहीं करता है। mb_convert_case का उपयोग करने का प्रयास करें।

$str = 'GRANDE ÁRVORE'; 

function ucwords_accent($string) 
{ 
    if (mb_detect_encoding($string) != 'UTF-8') { 
     $string = mb_convert_case(utf8_encode($string), MB_CASE_TITLE, 'UTF-8'); 
    } else { 
     $string = mb_convert_case($string, MB_CASE_TITLE, 'UTF-8'); 
    } 
    return $string; 
} 

echo ucwords_accent($str); 
+0

आप उस एन्कोडिंग पहचान और रूपांतरण के साथ क्या कर रहे हैं ?! * "यदि स्ट्रिंग यूटीएफ -8 एन्कोडेड है, तो utf8_encode इसे ..." * ...? – deceze

+0

@deceze गलती को खोजने के लिए धन्यवाद, अद्यतन उत्तर। – Danieloplata

+0

यह अभी भी बहुत अच्छा नहीं है। 1) 'mb_detect_encoding' भरोसेमंद लेकिन कुछ भी है, 2) यदि यह * नहीं * यूटीएफ -8 है * यह * कुछ भी हो सकता है, लेकिन 'utf8_encode' केवल लैटिन -1, 3 को संभालता है) स्ट्रिंग को परिवर्तित करने के बजाय आप केवल तीसरे स्थान को बदल सकते हैं आपकी स्ट्रिंग जो भी एन्कोडिंग है, उसमें 'mb_convert_case' का पैरामीटर, 4) आपको * पता होना चाहिए * आपकी स्ट्रिंग में एन्कोडिंग क्या है और पहले स्थान पर अनुमान लगाने और परीक्षण करने की आवश्यकता नहीं है। – deceze

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