PHP中的相同字符串不匹配

PHP中的相同字符串不匹配,php,regex,string,string-comparison,Php,Regex,String,String Comparison,我试图比较两个字符串(一个来自我的数据库,另一个由用户提供),看看它们是否匹配!我遇到的问题是,它们似乎不匹配-即使字符串似乎完全相同 我的PHP代码如下: public function Verify($pdo, $id, $token) { $prepsql = $pdo->prepare("SELECT * FROM Profiles WHERE id = '$id' LIMIT 1"); $prepsql->execute(); $currentrow

我试图比较两个字符串(一个来自我的数据库,另一个由用户提供),看看它们是否匹配!我遇到的问题是,它们似乎不匹配-即使字符串似乎完全相同

我的PHP代码如下:

public function Verify($pdo, $id, $token) {
    $prepsql = $pdo->prepare("SELECT * FROM Profiles WHERE id = '$id' LIMIT 1");
    $prepsql->execute();
    $currentrow = $prepsql->fetch();
    $current = preg_replace("/[^a-zA-Z0-9]+/", "", $currentrow["token"]);
    echo '<p>'.var_dump($current).'</p>';
    echo '<p>'.var_dump($token).'</p>';
    $token = preg_replace("/[^a-zA-Z0-9]+/", "", $token);
    if ($current == null || $current = "") {
        return false;
    } else {
        if (strcmp($token, $current) == 0) {
            return true;
        } else {
            return false;
        }
    }
}
公共函数验证($pdo,$id,$token){
$prepsql=$pdo->prepare(“从配置文件中选择*,其中id='$id'限制1”);
$prepsql->execute();
$currentrow=$prepsql->fetch();
$current=preg_replace(“/[^a-zA-Z0-9]+/”,“,$currentrow[“token”);
回显''.var_dump($current)。'

'; 回显''.var_dump($token)。'

'; $token=preg_replace(“/[^a-zA-Z0-9]+/”,“,”,$token); 如果($current==null | |$current=”“){ 返回false; }否则{ if(strcmp($token,$current)==0){ 返回true; }否则{ 返回false; } } }
以下是网页输出:

  string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p>string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p><p>Not authenticated</p>
string(244)“caaw4hruzub4baca7gffoawlhlgmmmlgqxdaw8ijdcwahzah0s4wzacp8q9dmmwsdpbq7jfch1ezuiszbhkov12utoyfqns0hhhgb5xkledqtzbrqavanjnsn7kacobzavqcrbglvkzbarfdehskbsr8qou543dvtzczcoyhzcoyhm5oyndvafwhl0bakc4jyih2yhepanpwgzbwgzbg0fhzzzzbjjjjjjjjjjjjjjjjjjjjjjjjj

string(244)“CAAW4RUZBUB4BACA7GFFOAWLHGMLGMMLGQXDAW8IJDCWAHZAH0S4WZACP8Q9DMMWSDPBQ7JFCH1EZUIZBBH12UTOYFQNS0HHGB5XKLEDQTZBRQAVANN7KACOBZAVQCRBGLVKZBARFBSR8QOU543DVtZCOYHM5OYH2YH2YPANPWGC0FHZBC0FHZBSRZBSKJJJJJJJJJJYYYH2H2H0NUZBMLZBDGZBQ0NZBJ0NZBZBZBZBZD” 未通过身份验证

未验证仅表示此函数返回false

我到底做错了什么?根据其他类似堆栈溢出答案的建议,我使用regex函数基本上只保留字母数字字符,但这没有什么区别?这也不是一个修剪问题,因为这不起作用

任何帮助都将不胜感激

谢谢

这是您的问题:

if ($current == null || $current = "") {
//                               ^ now `$current` is "", an empty string
将新值分配给
$current
,这是一个空字符串

您可能需要以下内容:

if ($current == null || $current == "") {
//                               ^^ now you are comparing

如果在执行“echo”“.var\u dump($token)。”

“;”基本3等于原则之前放置“$token=preg\u replace”(/[^a-zA-Z0-9]+/”,“,”,“,$token)”,会发生什么情况哦,我的上帝!唉,我没看到我错过了那个小小的等号!那太气人了!非常感谢@ImranAhmed我去过:-)@ImranAhmed你会惊讶于
会对某人的一天产生什么样的影响。几年前,我花了大约3/4个小时才发现这正是我正在编写的一段代码被弄糟的原因;-)而且它也不像这里那样引人注目。