উত্তর:
এর অর্থ এটি যখন আপনি স্বেচ্ছাসেবী বাইনারি ডেটা (যেমন- ASCII নন এবং / অথবা নাল বাইটসযুক্ত স্ট্রিংগুলি) পাস করেন তখন ফাংশনটি সঠিকভাবে কাজ করবে।
উদাহরণস্বরূপ, একটি নন-বাইনারি-নিরাপদ ফাংশন সি ফাংশনের উপর ভিত্তি করে হতে পারে যা নাল-টার্মিনেটেড স্ট্রিংগুলি প্রত্যাশা করে, সুতরাং যদি স্ট্রিংটিতে নাল অক্ষর থাকে তবে ফাংশনটি তার পরে কিছু উপেক্ষা করবে।
এটি প্রাসঙ্গিক কারণ পিএইচপি পরিষ্কারভাবে স্ট্রিং এবং বাইনারি ডেটা আলাদা করে না।
অন্যান্য ব্যবহারকারীরা ইতিমধ্যে binary safeসাধারণভাবে কী বোঝায় তা উল্লেখ করেছে ।
পিএইচপি-তে, অর্থটি আরও সুনির্দিষ্ট, কেবল মাইকেল যা উদাহরণ হিসাবে দেয় তার উল্লেখ করে।
পিএইচপি-র সমস্ত স্ট্রিংয়ের দৈর্ঘ্য যুক্ত থাকে, যা এটি রচনা করে এমন বাইটের সংখ্যা। যখন কোনও ফাংশন কোনও স্ট্রিংকে ম্যানিপুলেট করে, তা হয়:
0আসবে।এটিও সত্য যে ইঞ্জিন দ্বারা চালিত সমস্ত স্ট্রিং পিএইচপি ভেরিয়েবলগুলিও নাল-সমাপ্ত হয়। ২ এর উপর নির্ভর করে এমন ফাংশনগুলির সমস্যাটি হ'ল, যদি স্ট্রিংটিতে মান সহ একটি বাইট থাকে 0তবে যে ফাংশনটি এটি পরিচালনা করে তা ভাববে স্ট্রিংটি সেই বিন্দুতে শেষ হয়ে গেছে এবং তারপরে সমস্ত কিছু উপেক্ষা করবে।
উদাহরণস্বরূপ, যদি পিএইচপি এর strlenফাংশন সি স্ট্যান্ডার্ড লাইব্রেরির মতো কাজ করে strlen, তবে ফলাফল এখানে ভুল হবে:
$str = "abc\x00abc";
echo strlen($str); //gives 7, not 3!
strlen()একটি হল বাইনারি-নিরাপদ ফাংশন আছে? আমি আপনার কাছ থেকে নিশ্চিত করছি পিএইচপি ম্যানুয়াল ফাংশন জন্য পৃষ্ঠা strlen()এটা কিনা এটি একটি যে উল্লিখিত না করে বাইনারি-নিরাপদ ফাংশান বা একটা অ বাইনারি নিরাপদ ফাংশন। পিএইচপি ম্যানুয়াল থেকে কেবল এটি হারিয়ে যাওয়া জিনিসটি আমার মনে বিভ্রান্তি তৈরি করছে তাই আমি আপনার কাছ থেকে এটি নিশ্চিত করতে চাই। আমি আগ্রহের সাথে আপনার উত্তরটির অপেক্ষায় রয়েছি ধন্যবাদ.
php -r 'var_dump("\x00\x00\x00");'যাচাই করার জন্য, কিন্তু পিএইচপি এর strlen একটি জন্য বাইনারি নিরাপদ হয়েছে খুব , যেহেতু অন্তত পিএইচপি 4.x (যে বললেন, ঘৃণার পাত্র "mb_overload" বলা আছে, কিন্তু শুধু ভান করতে দেয় বিদ্যমান নয় দীর্ঘ সময় - php.net /manual/en/mbstring.overload.php )
আরও উদাহরণ:
<?php
$string1 = "Hello";
$string2 = "Hello\x00World";
// This function is NOT ! binary safe
echo strcoll($string1, $string2); // gives 0, strings are equal.
// This function is binary safe
echo strcmp($string1, $string2); // gives <0, $string1 is less than $string2.
?>
\xহেক্সাডেসিমাল স্বরলিপি নির্দেশ করে। দেখুন: পিএইচপি স্ট্রিং
0x00 = NULL
0x04 = EOT (End of transmission)
এএসসিআইআই টেবিল এএসসিআইআই চর তালিকা দেখতে
Hello\r\nWORLDমতো ঠিক হওয়া উচিত নয় , তাই না Hello?
strlen() বাইনারি-নিরাপদ ?