【发布时间】:2018-09-24 19:22:56
【问题描述】:
我有以下代码,应该是在去除所有空格后比较两个字符串,这是该函数的简化版本:
function not_same($type, $org_str1, $str2) {
$str1 = preg_replace('/\s+/', '', $org_str1);
$str2 = preg_replace('/\s+/', '', $str2);
$tries = [];
$tries[] = ["str1" => $str1, "str2" => $str2, "encoded1" => urlencode($str1), "encoded2" => urlencode($str2)];
if($str1 == $str2) {
return true;
} else {
return false;
}
}
我正在使用它在计算机上检查处理器是否与我的数据库中的匹配型号相同,所以 $org_str1 是我的客户所说的运行它的计算机,$str2 是模型应该具有的数据库中的 cpu。
有时这些字符串有不需要的空格,所以在比较过程中我删除了所有的空白,以便比较文本本身。
现在我让计算机回复说 CPU 错误,因为没有匹配,因为有一些空白没有被删除。
在这种特定情况下,我试图比较字符串客户端:Celeron® N3050 与服务器:Celeron® N3050。
每次在我的服务器上比较实际上的内容时,我都会记录,在我的客户端上它说它正在比较客户端:Celeron® N3050 与服务器:Celeron®N3050
我尝试将这个空格复制并粘贴到 str_replace() 函数中,但它没有解决问题。在那之后,我有了用urlencode()记录字符串的想法,这让我可以确切地看到这个神秘的白色字符是什么,但我仍然不知道如何解决这个问题。
urlencode() 之后的字符串是 Client: Celeron%C2%AE%C2%A0N3050 vs Server: Celeron%C2%AEN3050
如您所见,我的客户端字符串中仍有一个空格字符,编码为%C2%A0。为什么 preg_replace 没有去掉这个空格,我怎样才能以编程方式删除它?
【问题讨论】:
标签: php preg-replace whitespace