如何比较两个值并检查它们是否相似


How to compare two values and check if they are similar

更新的说明

我想检查用户提供的数据中是否包含字母和数字字符。因此,如果用户输入 LP1 5NQ 或 LP15NQ 并且我有一个数据数组,并且包含在数组中的内容是这样的:array(..., "LP1", ...)那么脚本应该将数组与 LP1 5NQ 或 LP15NQ 匹配

所以基本上我的问题是,当我尝试检查 LP1 5NQ 或类似内容的用户输入时,我只想检查他们输入 LP1 的开始部分,但将 LP1 5NQ 存储在他们的会话中,以便以后可以访问。我已经可以存储他们的输入,我只是在检查用户输入的开头时遇到问题。

PHP:

$op_postcodes = array("DG10","DG3", ......);
function like_in_array( $sNeedle, $aHaystack) {
    foreach($aHaystack as $sKey) {
        if(stripos(strtoupper($sKey), strtoupper($sNeedle)) !== false) {
            return true;
        }
    }
    return false;
}
if(isset($_POST["service_checker"]) && !empty($_POST["service_checker")) {
    $postcode = htmlentities(trim(strtoupper($_POST['postcode'])));
    if(empty($postcode)) {
        $error = "<p class='err_msg'>Your postcode is required so that we can check if our services are available in your area.</p>";
    } else if(like_in_array($postcode, $op_postcodes)) {
        $error = "<p class='pop_up alert success'>Your in! We supply our services to $postcode.</p>";
        $_SESSION['predx_cust_pc_order'] = $postcode;
    } else {
        $error = "<p class='err_msg'>Sorry, we aren't supplying your area just yet.</p>";
    }
}

考虑到忘记邮政编码中的空格的用户,我的其他解决方案的替代方案。

根据维基百科,邮政编码的第二部分总是三个字符长,所以你可以使用 substr 来切断最后三个字符,然后修剪以删除可能仍然存在的空格。喜欢这个:

trim(substr("LP1 5NQ", 0, -3));

我会像这样使用"爆炸"函数

explode(" ", "LP1 5NQ");

这会将字符串拆分为一个数组,其中包含邮政编码的第一部分和两个不同元素的第二部分。然后,您可以轻松访问数组的第一个元素进行检查。