PHP में mb_detect_encoding() फ़ंक्शन
PHP में, **mb_detect_encoding()** का उपयोग **कैरेक्टर एन्कोडिंग का पता लगाने** के लिए किया जाता है। यह उम्मीदवारों की एक क्रमबद्ध सूची से स्ट्रिंग के लिए कैरेक्टर एन्कोडिंग का पता लगा सकता है। PHP 4.0.6+ में समर्थित।
महत्वपूर्ण चेतावनी
स्वचालित कैरेक्टर एन्कोडिंग पहचान अतिरिक्त जानकारी के बिना **पूरी तरह विश्वसनीय नहीं** है। यह कुंजी के बिना एन्क्रिप्टेड स्ट्रिंग को डिकोड करने जैसा है। डेटा के साथ संग्रहीत/प्रेषित **Content-Type HTTP हेडर** में `charset` का उपयोग एन्कोडिंग संकेत के लिए करें।
सिंटैक्स
string|false mb_detect_encoding(
string $string,
array|string $encoding = null,
bool $strict = false
): string|false
पैरामीटर्स
- $string - जांच की जाने वाली स्ट्रिंग।
- $encoding - कोशिश करने के लिए कैरेक्टर एन्कोडिंग्स की सूची (सरणी या कॉमा-अलग स्ट्रिंग)। यदि छोड़ा गया, तो `mbstring.detect_order` या `mb_detect_order()` उपयोग किया जाता है।
- $strict - व्यवहार नियंत्रित करता है जब स्ट्रिंग किसी सूचीबद्ध एन्कोडिंग में मान्य नहीं होती:
false(डिफ़ॉल्ट): निकटतम मिलान वाली एन्कोडिंग लौटाता है।true: यदि कोई मान्य एन्कोडिंग नहीं मिली तो **false** लौटाता है।
रिटर्न मान
- पता लगाई गई **कैरेक्टर एन्कोडिंग (स्ट्रिंग)**।
- यदि स्ट्रिंग किसी सूचीबद्ध एन्कोडिंग में मान्य नहीं है तो **false**।
उदाहरण 1: सख्त मोड के बिना
<?php
$string = ""; // खाली स्ट्रिंग
echo mb_detect_encoding($string); // ASCII (डिफ़ॉल्ट डिटेक्ट ऑर्डर)
echo mb_detect_encoding($string, "auto"); // ASCII (mbstring.language के अनुसार विस्तारित)
echo mb_detect_encoding($string, "JIS, eucjp-win, sjis-win"); // JIS
$arr = ["ASCII", "JIS", "EUC-JP"];
echo mb_detect_encoding($string, $arr); // ASCII
?>
ASCIIASCIIJISASCII
उदाहरण 2: सख्त मोड के साथ
<?php
// ISO-8859-1 में एन्कोडेड: á é ó ú
$string = "\xE1\xE9\xF3\xFA";
// UTF-8 को निकटतम मिलान माना जाता है (लेकिन अमान्य)
var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], false)); // string(5) "UTF-8"
var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], true)); // bool(false)
// ISO-8859-1 सूची में है - मान्य मिलान
var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], false)); // string(10) "ISO-8859-1"
var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], true)); // string(10) "ISO-8859-1"
?>
सर्वोत्तम प्रथाएं
- हमेशा संभव हो तो **स्पष्ट एन्कोडिंग घोषणा** (HTTP हेडर, BOM, मेटाडेटा) का उपयोग करें।
- सुरक्षा-महत्वपूर्ण संदर्भों के लिए **
$strict = true** का उपयोग करें। - आधुनिक एप्लिकेशन के लिए: **हर जगह UTF-8** मान लें/लागू करें।