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

时间:2015-10-12 00:27:14

标签: php

  

更新说明

     

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

所以基本上我的问题是,当我尝试检查说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>";
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我会使用&#39;爆炸&#39;像这样的功能

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

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