Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以在忽略其中一个字符的同时比较两个字符串?_Php_String Comparison - Fatal编程技术网

Php 是否可以在忽略其中一个字符的同时比较两个字符串?

Php 是否可以在忽略其中一个字符的同时比较两个字符串?,php,string-comparison,Php,String Comparison,如果你有 $str1 = "h*llo"; $str2 = "hello"; 是否可以快速比较它们,而不必先从str1中删除*和从str2中删除匹配的索引字符 无论字符串中有多少*,解决方案都需要工作,例如: $str1 = "h*l*o"; $str2 = "hello"; 感谢您的关注。是的,使用regex,更具体地说是PHP。你要找的是“通配符” 这是未经测试的,但应适用于您: $str1 = "h*llo"; $str2 = "hello"; //periods are a wil

如果你有

$str1 = "h*llo";
$str2 = "hello";
是否可以快速比较它们,而不必先从str1中删除*和从str2中删除匹配的索引字符

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

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

感谢您的关注。

是的,使用regex,更具体地说是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";
}

$str1=“M是的,带有regex,更具体地说是针对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";
}

$str1=“M您可以使用
相似的\u 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

请参阅此处的更多信息

您可以使用
相似的\u 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


请在此处查看您正在寻找的更多信息。

可能是@mario的复制品不知道该功能!可能是一个比使用正则表达式更完整/更快/更好的整体方法。谢谢大家-fnmatch示例似乎不起作用。我将检查我的服务器上是否有该功能。您正在寻找。可能是@mario的副本不知道该功能!可能是一个比使用正则表达式更完整/更快/更好的整体方法。谢谢大家-fnmatch示例似乎不起作用。我会检查我的服务器上是否有它。这是我仍然喜欢的+1用于思考preg_quote。虽然将
*
替换为
*
以匹配多个字符。感谢
*
的建议,我对正则表达式不是很在行。也许我不应该使用通配符。我的文本中有一个字符“@Shaun Just change
str\u replace(“*”
to
str\u replace”(“你好,John。你给出的示例显示“不匹配”。应该是匹配吗?这仍然是我喜欢的。+1用于思考preg_quote。虽然将
*
替换为
*
以匹配多个字符。感谢
*
的建议,我不太擅长正则表达式。也许我不应该使用通配符。我的文本中有字符“@Shaun Just change
str_replace(”*“
to
str_replace”(“嗨,约翰,你给出的例子是“不匹配”。应该匹配吗?出于好奇,为什么是80%?我喜欢这个答案,它适用于大多数情况,但它不如使用实际通配符的方法准确,比如fnmatch()出于好奇,为什么是80%?我喜欢这个答案,它适用于大多数情况,但它不如使用实际通配符(如fnmatch()或regex)的方法准确。