2011-06-06 9 views
12

जब मैं php में substr() फ़ंक्शन का उपयोग करता हूं, तो मुझे स्ट्रिंग के अंत में एक प्रश्नपत्र (एक प्रश्न के साथ एक वर्ग - ब्राउज़र के आधार पर) मिलता है जब यह अंतिम वर्ण था एक विशेष, जैसे ë या ö, आदि ...php substr अंतिम परिणाम के साथ विशेष वर्ण के साथ प्रश्न

$introtext=html_entity_decode($item->description, ENT_QUOTES, "UTF-8"); 
$introtext=substr($introtext,0,200); 

मैं इससे कैसे बच सकता हूं? अग्रिम में धन्यवाद!

उत्तर

29

अपने स्ट्रिंग multibyte एन्कोडिंग (UTF-8) की तरह होता है, यदि आप mb_substr का उपयोग करना चाहिए इस तरह की समस्याओं से बचने के लिए किया जाता है:

$introtext=mb_substr($introtext,0,200); 
+0

धन्यवाद mb_substr में यूनिकोड नाम जोड़ने के लिए! अभी तक उस समारोह को नहीं पता था। मैं अभी ठीक काम करता हूँ! – Bert

+0

बढ़िया! अपेक्षित के रूप में काम करता है :) – Can

+0

यह स्कैंडिनेवियाई अक्षरों के साथ काम नहीं करता है, जैसे कि यूएफएफ -8 जोड़ने की आवश्यकता है जैसे कि Sruit A.Suk ने – EspeH

4

है ऐसा इसलिए है क्योंकि substr multibyte साथ काम नहीं करता वर्ण। सबस्ट्रेट शायद "आधे में" एक मल्टीबाइट चरित्र काट देगा। आपको इसके बजाय mb_substr का उपयोग करना चाहिए। यह भी सुनिश्चित करें कि आपकी फ़ाइल यूटीएफ -8 में सहेजी गई है।

$introtext = mb_substr($introtext, 0, 200); 
+0

धन्यवाद! अभी ठीक काम करता है। – Bert

2

किसी के मामले में इसके बाद के संस्करण की कोशिश की है और अभी भी काम नहीं किया,

कोशिश की तरह

$introtext=mb_substr($introtext, 0, 200, 'utf-8'); 
+1

स्वीकृत उत्तर मेरे लिए काम नहीं किया गया था, मुझे इसे स्कैंडिनेवियाई पात्रों के साथ काम करने के लिए अपने तरीके की आवश्यकता थी। धन्यवाद – EspeH