অন্যদের দ্বারা উল্লিখিত হিসাবে, পিএইচপি 7 \u
সরাসরি ইউনিকোড সিনট্যাক্সের জন্য সমর্থন প্রবর্তন করে।
যেমনটি অন্যরা উল্লেখ করেছেন, পিএইচপি-তে কোনও বুদ্ধিমান ইউনিকোড চরিত্রের বর্ণনা থেকে স্ট্রিংয়ের মান পাওয়ার একমাত্র উপায় হ'ল এটিকে অন্য কোনও কিছু থেকে রূপান্তর করা (যেমন জেএসএন পার্সিং, এইচটিএমএল পার্সিং বা অন্য কোনও ফর্ম)। তবে এটি রান-টাইম পারফরম্যান্স ব্যয়ে আসে।
তবে, অন্য একটি বিকল্প আছে। \x
বাইনারি পালানোর সাথে সাথে আপনি সরাসরি পিএইচপি-তে অক্ষরটি এনকোড করতে পারেন । \x
পালাবার সিনট্যাক্স হয় পিএইচপি 5 এ সমর্থিত ।
এটি বিশেষত কার্যকর যদি আপনি চরিত্রটির প্রাকৃতিক রূপের মাধ্যমে সরাসরি কোনও স্ট্রিংয়ের মধ্যে প্রবেশ না করতে চান useful উদাহরণস্বরূপ, যদি এটি কোনও অদৃশ্য নিয়ন্ত্রণের অক্ষর হয় বা অন্য সাদা জায়গা সনাক্ত করতে পারে।
প্রথম, একটি প্রমাণ উদাহরণ:
// 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
?
নীচে কোনও জেএসওএন স্ট্রিং, এইচটিএমএল সত্তা বা অন্য কোনও পদ্ধতির উপর ভিত্তি করে যে কোনও অক্ষরের জন্য পালানোর ক্রম উত্পন্ন করার জন্য পিএইচপি স্ক্রিপ্ট দেওয়া আছে যখন একবার আপনি স্থানীয় স্ট্রিং হিসাবে তা পেয়ে যান।
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