== পিএইচপিতে কেস-সংবেদনশীল স্ট্রিং তুলনা করা যায়?


88

আমি php.net এ এটি খুঁজে পেতে অক্ষম ছিল। ==পিএইচপি-তে স্ট্রিংগুলির তুলনা করার জন্য কি ডাবল সমান চিহ্ন ( ) কেস সংবেদনশীল?

উত্তর:



20

হ্যাঁ, তবে এটি বাই-বাই-বাইট তুলনা করে।

আপনি যদি ইউনিকোড স্ট্রিংগুলির সাথে তুলনা করছেন, আপনি প্রথমে সেগুলি স্বাভাবিক করার ইচ্ছা করতে পারেন। Normalizerক্লাস দেখুন ।

উদাহরণ (ইউটিএফ -8 এ আউটপুট):

$s1 = mb_convert_encoding("\x00\xe9", "UTF-8", "UTF-16BE");
$s2 = mb_convert_encoding("\x00\x65\x03\x01", "UTF-8", "UTF-16BE");
//look the same:
echo $s1, "\n";
echo $s2, "\n";
var_dump($s1 == $s2); //false
var_dump(Normalizer::normalize($s1) == Normalizer::normalize($s2)); //true

4
অন্তর্দৃষ্টি জন্য এটি +1 যে এটি আসলে স্ট্রিং তুলনা নয় (এটি বাইনারি তুলনা)। অতএব এটি প্রযুক্তিগতভাবে কেস-সংবেদনশীল নয় (যদিও 99.999% ক্ষেত্রে এটি এর মতোই আচরণ করে) ...
ইরকম্যাক্সেল

11

হ্যাঁ, ==এটি সংবেদনশীল।

ঘটনাচক্রে, সংক্ষিপ্ত ক্ষেত্রে সংবেদনশীল তুলনা করার জন্য, ব্যবহার করুন strcasecmp:

<?php
    $var1 = "Hello";
    $var2 = "hello";
    echo (strcasecmp($var1, $var2) == 0); // TRUE;
?>



1

হ্যাঁ, ==এটি সংবেদনশীল। আমার পক্ষে সবচেয়ে সহজ উপায় হ'ল বড় হাতের অক্ষরে রূপান্তর করা এবং তারপরে তুলনা করা। উদাহরণস্বরূপ:

$var = "Hello";
if(strtoupper($var) == "HELLO") {
    echo "identical";
}
else {
    echo "non identical";
}

আমি আশা করি এটা কাজ করে!


0

পরিবর্তে আপনি একটি হ্যাশ ফাংশনটির সাথে তুলনা করার চেষ্টা করতে পারেন

  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.