两个不同的特殊字符是相同的

时间:2016-07-17 06:17:24

标签: php apache special-characters

我试图比较两个不同的特殊字符,但是当我比较它们时它们是相同的。

users.com/profile.php?username=Stackoverflow

的Apache / 2.4.10

PHP / 5.6.3

PhpStorm 9.0.2

如何进行有效比较?

谢谢。

1 个答案:

答案 0 :(得分:2)

  

如何进行有效比较?

更新了解决方案

也许我们以错误的方式看待这个问题。问题可能与PHP无关,而是与您的代码编辑器有关。也许编辑器在输入时将两个字符都注册为相同,因此PHP没有看到任何差异。您可以这样做:

  1. 使用识别字符的编辑器(例如Wordpad
  2. )将每个字符串单独保存在文件中
  3. 使用$char=file_get_contents('path/to/char.txt')
  4. 在PHP中加载角色
  5. 现在我们完全绕过了你的代码编辑器,比较两者。如果他们不同,那么你的编辑可能会受到指责。
  6. 原始解决方案

    您可以尝试将字符转换为ASCII值,然后比较值而不是字符

    $ordUTF8 = function($char){
        list(, $ord) = unpack('N', mb_convert_encoding($char, 'UCS-4BE', 'UTF-8'));
        return $ord;
    };
    $char1= "";
    $char2= "";
    // 61656 and 61558 in my testing
    $isEqual = $ordUTF8($char1)===$ordUTF8($char2);
    

    Live demo。此解决方案的灵感来自this accepted answer