मल्टीबाइट वर्ण प्रोग्रामिंग में मुश्किल हो सकते हैं।
mbstring डिफ़ॉल्ट रूप से सक्षम नहीं है। सुनिश्चित करें कि आपने वह भाग पहले पढ़ लिया है।
एक दस्तावेज़ में मल्टीबाइट स्ट्रिंग्स हो सकती हैं। जबकि PHP में स्ट्रिंग्स के लिए बहुत सारे उपयोगी सहायक हैं, ये सहायक मल्टीबाइट स्ट्रिंग्स के लिए नहीं हैं।
इससे खराब बग और अन्य अप्रत्याशित त्रुटियां होने की संभावना है, खासकर जब आप वर्णों की गिनती करते हैं।
इसलिए आप इसके बजाय PHP में मल्टीबाइट स्ट्रिंग फ़ंक्शंस का उपयोग करना चाहेंगे।
इसके अलावा, नए मल्टीबाइट स्ट्रिंग फ़ंक्शंस, जैसे mb_trim, mb_ltrim, और mb_rtrim 8.4 में उपलब्ध होंगे (लेखन के समय PHP की अगली रिलीज़)।
अंग्रेजी ASCII वर्ण सेट का उपयोग करती है, इसलिए r या s जैसे अक्षरों को केवल एक बाइट की आवश्यकता होती है।
इसके विपरीत, कुछ भाषाएं ऐसे वर्णों का उपयोग करती हैं जिनके लिए एक से अधिक बाइट की आवश्यकता होती है, उदाहरण के लिए, हान वर्ण (यह 6 बाइट्स तक हो सकते हैं!)।
$strings = [ "?????", "チャーミング", "González", ]; foreach ($strings as $string) { echo 'strlen:' . strlen($string) . ' vs. mb_strlen:' . mb_strlen($string) . PHP_EOL; }
echo strpos("チャーミング", "ャ"); // gives 3 echo mb_strpos("チャーミング", "ャ"); // gives 1 because 1st position is 0
echo substr("チャーミング", 3) . PHP_EOL;// ャーミング echo mb_substr("チャーミング", 3);// ミング
आपने पढ़ा होगा कि एमबीस्ट्रिंग फ़ंक्शंस का महत्वपूर्ण प्रभाव हो सकता है।
आप इसे निम्नलिखित स्क्रिप्ट के साथ पुन: पेश भी कर सकते हैं:
$cnt = 100000; $strs = [ 'empty' => '', 'short' => 'zluty kun', 'short_with_uc' => 'zluty Kun', 'long' => str_repeat('this is about 10000 chars long string', 270), 'long_with_uc' => str_repeat('this is about 10000 chars long String', 270), 'short_utf8' => 'žlutý kůň', 'short_utf8_with_uc' => 'Žlutý kŮň', ]; foreach ($strs as $k => $str) { $a1 = microtime(true); for($i=0; $iस्रोत: PHP बग्स
mb_* फ़ंक्शंस धीमे हैं, लेकिन यह हमेशा एक समझौता है, और केवल संदर्भ ही यह निर्धारित करेगा कि आपको इन सहायकों का उपयोग करना चाहिए या अपना स्वयं का बनाना चाहिए।
उदाहरण के लिए, यदि आप $cnt = 100000 को प्रतिस्थापित करते हैं; $cnt = 100 से; उपरोक्त स्क्रिप्ट में, mb_* सहायक अभी भी काफी धीमे हैं, लेकिन आपके मामले में अंतिम प्रभाव ठीक हो सकता है (उदाहरण के लिए, 0.008 एमएस बनाम 0.004 एमएस)।
लपेटें
आपको मल्टीबाइट्स को ध्यान में रखना होगा, विशेष रूप से बहुभाषी संदर्भ में, और PHP में इसके लिए अंतर्निहित सहायक हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3