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 changestr\u replace(“*”
tostr\u replace”(“你好,John。你给出的示例显示“不匹配”。应该是匹配吗?这仍然是我喜欢的。+1用于思考preg_quote。虽然将*
替换为*
以匹配多个字符。感谢*
的建议,我不太擅长正则表达式。也许我不应该使用通配符。我的文本中有字符“@Shaun Just changestr_replace(”*“
tostr_replace”(“嗨,约翰,你给出的例子是“不匹配”。应该匹配吗?出于好奇,为什么是80%?我喜欢这个答案,它适用于大多数情况,但它不如使用实际通配符的方法准确,比如fnmatch()出于好奇,为什么是80%?我喜欢这个答案,它适用于大多数情况,但它不如使用实际通配符(如fnmatch()或regex)的方法准确。