खोज…


PHP का उपयोग करके यूनिकोड वर्णों को "\ uxxxx" प्रारूप में परिवर्तित करना

आप आगे और पीछे जाने के लिए निम्न कोड का उपयोग कर सकते हैं।

if (!function_exists('codepoint_encode')) {
    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }
}

if (!function_exists('codepoint_decode')) {
    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }
}

कैसे उपयोग करें :

echo "\nUse JSON encoding / decoding\n";
var_dump(codepoint_encode("我好"));
var_dump(codepoint_decode('\u6211\u597d'));

आउटपुट :

Use JSON encoding / decoding
string(12) "\u6211\u597d"
string(6) "我好"

PHP का उपयोग करके यूनिकोड वर्णों को उनके संख्यात्मक मान और / या HTML संस्थाओं में परिवर्तित करना

आप आगे और पीछे जाने के लिए निम्न कोड का उपयोग कर सकते हैं।

if (!function_exists('mb_internal_encoding')) {
    function mb_internal_encoding($encoding = NULL) {
        return ($from_encoding === NULL) ? iconv_get_encoding() : iconv_set_encoding($encoding);
    }
}

if (!function_exists('mb_convert_encoding')) {
    function mb_convert_encoding($str, $to_encoding, $from_encoding = NULL) {
        return iconv(($from_encoding === NULL) ? mb_internal_encoding() : $from_encoding, $to_encoding, $str);
    }
}

if (!function_exists('mb_chr')) {
    function mb_chr($ord, $encoding = 'UTF-8') {
        if ($encoding === 'UCS-4BE') {
            return pack("N", $ord);
        } else {
            return mb_convert_encoding(mb_chr($ord, 'UCS-4BE'), $encoding, 'UCS-4BE');
        }
    }
}

if (!function_exists('mb_ord')) {
    function mb_ord($char, $encoding = 'UTF-8') {
        if ($encoding === 'UCS-4BE') {
            list(, $ord) = (strlen($char) === 4) ? @unpack('N', $char) : @unpack('n', $char);
            return $ord;
        } else {
            return mb_ord(mb_convert_encoding($char, 'UCS-4BE', $encoding), 'UCS-4BE');
        }
    }
}

if (!function_exists('mb_htmlentities')) {
    function mb_htmlentities($string, $hex = true, $encoding = 'UTF-8') {
        return preg_replace_callback('/[\x{80}-\x{10FFFF}]/u', function ($match) use ($hex) {
            return sprintf($hex ? '&#x%X;' : '&#%d;', mb_ord($match[0]));
        }, $string);
    }
}

if (!function_exists('mb_html_entity_decode')) {
    function mb_html_entity_decode($string, $flags = null, $encoding = 'UTF-8') {
        return html_entity_decode($string, ($flags === NULL) ? ENT_COMPAT | ENT_HTML401 : $flags, $encoding);
    }
}

कैसे उपयोग करें :

echo "Get string from numeric DEC value\n";
var_dump(mb_chr(50319, 'UCS-4BE'));
var_dump(mb_chr(271));

echo "\nGet string from numeric HEX value\n";
var_dump(mb_chr(0xC48F, 'UCS-4BE'));
var_dump(mb_chr(0x010F));

echo "\nGet numeric value of character as DEC string\n";
var_dump(mb_ord('ď', 'UCS-4BE'));
var_dump(mb_ord('ď'));

echo "\nGet numeric value of character as HEX string\n";
var_dump(dechex(mb_ord('ď', 'UCS-4BE')));
var_dump(dechex(mb_ord('ď')));

echo "\nEncode / decode to DEC based HTML entities\n";
var_dump(mb_htmlentities('tchüß', false));
var_dump(mb_html_entity_decode('tchüß'));

echo "\nEncode / decode to HEX based HTML entities\n";
var_dump(mb_htmlentities('tchüß'));
var_dump(mb_html_entity_decode('tchüß'));

आउटपुट :

Get string from numeric DEC value
string(4) "ď"
string(2) "ď"

Get string from numeric HEX value
string(4) "ď"
string(2) "ď"

Get numeric value of character as DEC int
int(50319)
int(271)

Get numeric value of character as HEX string
string(4) "c48f"
string(3) "10f"

Encode / decode to DEC based HTML entities
string(15) "tchüß"
string(7) "tchüß"

Encode / decode to HEX based HTML entities
string(15) "tchüß"
string(7) "tchüß"

यूनिकोड समर्थन के लिए Intl extention

मूल स्ट्रिंग फ़ंक्शन एकल बाइट फ़ंक्शन के लिए मैप किए जाते हैं, वे यूनिकोड के साथ अच्छी तरह से काम नहीं करते हैं। सीमाएं आइकनव और mbstring यूनिकोड के लिए कुछ समर्थन प्रदान करते हैं, जबकि Intl-extention पूर्ण समर्थन प्रदान करता है। Intl वास्तव में डी मानक ICU पुस्तकालय के लिए एक आवरण है, http://php.net/manual/en/book.intl.php पर उपलब्ध विस्तृत जानकारी के लिए http://site.icu-project.org देखें। यदि आप एक्स्टेंशन को स्थापित नहीं कर सकते हैं, तो सिम्फनी फ्रेमवर्क से Intl के वैकल्पिक कार्यान्वयन पर एक नज़र डालें।

ICU पूर्ण अंतर्राष्ट्रीयकरण प्रदान करता है, जिसमें यूनिकोड केवल एक छोटा सा हिस्सा है। आप आसानी से ट्रांसकोडिंग कर सकते हैं:

\UConverter::transcode($sString, 'UTF-8', 'UTF-8');  // strip bad bytes against attacks

लेकिन, अभी आइकॉन को खारिज न करें, विचार करें:

\iconv('UTF-8', 'ASCII//TRANSLIT', "Cliënt"); // output: "Client"


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow