比较两个字符串时输出错误

wrong output when compare two string

我想比较 2 个以太网地址。

我尝试了 trim、strcmo 和替换空字符。但它不起作用

这是我的代码:

<?php
$a='0x0c656968912fF22c17ABf5E190498034542CC475';
$b='0x0c656968912ff22c17abf5e190498034542cc475';
$a2 = str_replace("[=10=]", "", $a);
$b2 = str_replace("[=10=]", "", $b);

var_dump($a == $b);
var_dump($a2 == $b2);
var_dump(strcmp($a,$b));
var_dump(strcmp($a2,$b2));

看起来以上所有 var_dump 都应该 return 正确(strcmp 中为 0),但它们不正确! 为什么?! 这是一个错误吗? 我如何比较这个字符串

您正在体验 PHP 的 strcmp 函数 here.

文档的第一个示例中演示的内容

基本上,比较是区分大小写的。因此,strcmp 不 return 为真,因为 $a 的第 15 位字符 F 是大写的,而在 $b 中是小写的。

见下文,下划线突出显示:

$a='0x0c656968912f_F_22c17ABf5E190498034542CC475';
$b='0x0c656968912f_f_22c17abf5e190498034542cc475';

经过重新考虑,两个字符串之间还有其他大小写不匹配的情况。