जैसा कि दूसरों ने उल्लेख किया है, PHP 7 \uयूनिकोड सिंटैक्स के लिए सीधे समर्थन का परिचय देता है ।
जैसा कि दूसरों द्वारा भी उल्लेख किया गया है, PHP में किसी भी समझदार यूनिकोड वर्ण विवरण से एक स्ट्रिंग मान प्राप्त करने का एकमात्र तरीका है, इसे किसी और चीज़ से परिवर्तित करके (जैसे JSON पार्सिंग, HTML पार्सिंग या कुछ अन्य रूप)। लेकिन यह रन-टाइम प्रदर्शन लागत पर आता है।
हालांकि, एक अन्य विकल्प है। आप \xद्विआधारी भागने के साथ PHP में सीधे चरित्र को एन्कोड कर सकते हैं । \xभागने वाक्य रचना भी है PHP 5 में समर्थित ।
यह विशेष रूप से उपयोगी है यदि आप अपने प्राकृतिक रूप के माध्यम से सीधे एक स्ट्रिंग में चरित्र में प्रवेश नहीं करना पसंद करते हैं। उदाहरण के लिए, यदि यह एक अदृश्य नियंत्रण चरित्र है, या व्हॉट्सएप का पता लगाने के लिए अन्य कठिन है।
सबसे पहले, एक सबूत उदाहरण:
// Unicode Character 'HAIR SPACE' (U+200A)
$htmlEntityChar = " ";
$realChar = html_entity_decode($htmlEntityChar);
$phpChar = "\xE2\x80\x8A";
echo 'Proof: ';
var_dump($realChar === $phpChar); // bool(true)
ध्यान दें कि, एक अन्य उत्तर में पेसियर द्वारा उल्लिखित, यह बाइनरी कोड विशिष्ट वर्ण एन्कोडिंग के लिए अद्वितीय है। उपरोक्त उदाहरण में, \xE2\x80\x8Aयूटीएफ -8 में यू + 200 ए के लिए बाइनरी कोडिंग है।
अगला प्रश्न, कैसे आप से मिलता है है U+200Aकरने के लिए \xE2\x80\x8A?
नीचे एक मूल अक्षर के रूप में एक बार JSON स्ट्रिंग, HTML इकाई, या किसी अन्य विधि के आधार पर, किसी भी वर्ण के लिए एस्केप अनुक्रम उत्पन्न करने के लिए एक PHP स्क्रिप्ट है।
function str_encode_utf8binary($str) {
/** @author Krinkle 2018 */
$output = '';
foreach (str_split($str) as $octet) {
$ordInt = ord($octet);
// Convert from int (base 10) to hex (base 16), for PHP \x syntax
$ordHex = base_convert($ordInt, 10, 16);
$output .= '\x' . $ordHex;
}
return $output;
}
function str_convert_html_to_utf8binary($str) {
return str_encode_utf8binary(html_entity_decode($str));
}
function str_convert_json_to_utf8binary($str) {
return str_encode_utf8binary(json_decode($str));
}
// Example for raw string: Unicode Character 'INFINITY' (U+221E)
echo str_encode_utf8binary('∞') . "\n";
// \xe2\x88\x9e
// Example for HTML: Unicode Character 'HAIR SPACE' (U+200A)
echo str_convert_html_to_utf8binary(' ') . "\n";
// \xe2\x80\x8a
// Example for JSON: Unicode Character 'HAIR SPACE' (U+200A)
echo str_convert_json_to_utf8binary('"\u200a"') . "\n";
// \xe2\x80\x8a