基于通配符

时间:2015-09-18 01:44:19

标签: php string wildcard string-comparison

需要比较两个字符串才能得到一个PAIR,条件是只有第五个索引处的字符不同(忽略前4个字符)...在mysql中它可以通过INBXOLC800Y = INBX_LC800Y来实现(使用' _'通配符)但是如何在PHP中执行此操作...这里是我的代码现在停止但我想可能有更聪明和/或最短的方式???

$first_sku_full=  "INBXOLC800Y";
$first_sku_short= substr($first_sku_full, 5); // gives LC800Y

$second_sku_full= "INBXPLC800Y";
$second_sku_short= substr($second_sku_full, 5); // gives LC800Y

if ( $first_sku_short == $second_sku_short ) {
    // 6th character onward is matched now included 5th character  
    $first_sku_short= substr($first_sku_full, 4); 
    $second_sku_short= substr($second_sku_full, 4); 
    if ( $first_sku_short != $second_sku_short ) { 
        echo "first and second sku is a pair";     
    }else{
        echo "first and second sku is NOT a pair;
    } 
}

2 个答案:

答案 0 :(得分:0)

您可以通过不分配所有这些变量来缩短它,只需测试if中的子字符串。

if (substr($first_sku_full, 5) == substr($second_sku_full, 5)) {
    if ($first_sku_full[4] != $second_sku_full[4])
        echo "first and second sku are a pair";
    } else {
        echo "first and second sku are NOT a pair";
    }
}

答案 1 :(得分:0)

我们使用AND来进一步消除if..else

$first_sku_full=  "INBXOLC800Y";
$first_sku_short= substr($first_sku_full, 5); // gives LC800Y

$second_sku_full= "INBXPLC800Y";
$second_sku_short= substr($second_sku_full, 5); // gives LC800Y

if ($first_sku_short == $second_sku_short && $first_sku_full[4] != $second_sku_full[4]) {
    echo "first and second sku are a pair";
} else {
    echo "first and second sku are NOT a pair";
}