【问题标题】:How to compare two values and check if they are similar如何比较两个值并检查它们是否相似
【发布时间】:2015-10-12 00:27:13
【问题描述】:

更新说明

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

【问题讨论】:

    标签: php


    【解决方案1】:

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

    根据 Wikipedia,邮政编码的第二部分总是三个字符长,因此您可以使用 substr 切断最后三个字符,然后通过 trim 删除可能仍然存在的空格。像这样:

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

    【讨论】:

    • 谢谢 - 我觉得这会更好。我会告诉你的
    • 修剪什么都不做,由于 substr,你没有得到第 4 个字符
    • 没问题!请记住将我的解决方案标记为正确答案,如果它有效,因为我对 SO 还很陌生并且想要积分哈哈
    • 我是不是又全部倒退了
    • 我只需要新眼镜兄弟 :-)
    【解决方案2】:

    我会像这样使用“爆炸”功能

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

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

    【讨论】:

    • 你说这个方法最有效吗?
    • 这取决于你所说的有效。它将字符串分成两个字符串,并允许轻松访问第一个字符串,所以是的。
    • 我理解它的作用——但是如果用户输入 LP15NQ 而不是 LP1 5NQ 怎么办?那么这个方法不会失败吗?
    • 我刚刚添加了一个考虑到这种情况的新解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多