Serupa Tapi Tak Sama ?

Untuk memeriksa perbedaan antara dua string dalam PHP, terutama ketika keduanya tampak sama tetapi ternyata berbeda, Anda bisa menggunakan beberapa pendekatan berikut:

  1. Periksa Panjang String: Terkadang, perbedaan mungkin berasal dari karakter tak terlihat seperti spasi atau karakter Unicode yang berbeda. Memeriksa panjang string dapat membantu mengidentifikasi apakah ada karakter tambahan atau tersembunyi.
  2. Tampilkan Kode Unicode: Menampilkan kode Unicode dari setiap karakter dalam string dapat membantu Anda menemukan perbedaan halus yang mungkin tidak terlihat dengan mata telanjang.
  3. Gunakan strcmp atau mb_strcmp: Fungsi ini bisa digunakan untuk membandingkan string secara langsung dan memberi tahu apakah string tersebut benar-benar sama.

Berikut adalah contoh kode untuk melakukan tiga langkah tersebut:

$q = $output;
$q_without_harakat = "فعل";

// 1. Periksa panjang string
echo "Length of \$q: " . strlen($q) . "<br>";
echo "Length of \$q_without_harakat: " . strlen($q_without_harakat) . "<br>";

// 2. Tampilkan kode Unicode
function unicodeString($str) {
    $unicode = [];
    for ($i = 0; $i < mb_strlen($str); $i++) {
        $unicode[] = "U+" . strtoupper(dechex(mb_ord(mb_substr($str, $i, 1))));
    }
    return implode(' ', $unicode);
}

echo "Unicode of \$q: " . unicodeString($q) . "<br>";
echo "Unicode of \$q_without_harakat: " . unicodeString($q_without_harakat) . "<br>";

// 3. Gunakan strcmp atau mb_strcmp
if (strcmp($q, $q_without_harakat) === 0) {
    echo "\$q dan \$q_without_harakat adalah sama.<br>";
} else {
    echo "\$q dan \$q_without_harakat berbeda.<br>";
}

Dalam contoh ini:

  1. strlen digunakan untuk memeriksa panjang string. Jika panjangnya berbeda, berarti ada karakter tambahan.
  2. unicodeString adalah fungsi untuk menampilkan kode Unicode dari setiap karakter dalam string. Ini akan membantu mengidentifikasi perbedaan karakter yang tidak terlihat.
  3. strcmp digunakan untuk membandingkan string secara langsung.

Jika string tersebut benar-benar berbeda karena adanya karakter tak terlihat seperti harakat (diakritik dalam bahasa Arab), Anda akan melihat perbedaannya melalui output Unicode atau perbedaan panjang string.

About Reza Ervani 430 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.