"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP: मल्टीबाइट्स जा रहा है

PHP: मल्टीबाइट्स जा रहा है

2024-08-18 को प्रकाशित
ब्राउज़ करें:416

PHP: Going multibytes

मल्टीबाइट वर्ण प्रोग्रामिंग में मुश्किल हो सकते हैं।

चेतावनी

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 में इसके लिए अंतर्निहित सहायक हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/spo0q/php-going-multibytes-3b3b?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3