是否有可能比较两个字符串而忽略其中一个字符php?

时间:2013-10-15 03:09:00

标签: php string-comparison

如果你有

$str1 = "h*llo";
$str2 = "hello";

是否可以快速比较它们而无需先从str1中删除*,并从str2中删除匹配的索引字符?

无论字符串中有多少*,解决方案都需要工作,例如:

$str1 = "h*l*o";
$str2 = "hello";

谢谢你看看。

2 个答案:

答案 0 :(得分:2)

是的,使用正则表达式,更具体地说是preg_match用于PHP。你在寻找什么是“通配符”。

这是未经测试但应该适合您:

$str1 = "h*llo";
$str2 = "hello";

//periods are a wildcards in regex
if(preg_match("/" . preg_quote(str_replace("*", ".*", $str1), "/") . "/", $str2)){
    echo "Match!";
} else {
    echo "No match";
}

编辑:这应该适用于您的情况:

$str1 = "M<ter";
$str2 = "Moter";

//periods are a wildcards in regex
if(preg_match("/" . str_replace("\<", ".*", preg_quote($str1, "/")) . "/", $str2)){
    echo "Match!";
} else {
    echo "No match";
}

答案 1 :(得分:1)

您可以使用similar_text()来比较两个字符串,并接受结果是否高于例如80%。

 similar_text($str1, $str2, $percent); 

示例:

$str1 = 'AAA';
$str1 = '99999';

similar_text($str1, $str2, $percent); 
echo $percent; // e.g. 0.000

$str1 = "h*llo";
$str2 = "hello";

similar_text($str1, $str2, $percent); 
echo $percent; // e.g. 95.000

在此处查看更多PHP SIMILAR TEXT