比较两个文本的子串

meh*_*avi 1 php compare laravel

我有两个如下所示的数组

['*01***12*4**','0*****54*41*','***18*******','*2*7**3***1','***42*12*4**',...]
['128420120400','012189654700','321501481012','88114474111',...]
Run Code Online (Sandbox Code Playgroud)

我想比较两个数组的字符串而不考虑星号,并将相同的代码放入一个数组中(两个数组中代码的长度都是12)在上面的示例中,'***42*12*4**'和 '128420120400代码是相等的。我使用 php (laravel)

Tim*_*sen 6

一种方法是使用正则表达式,其中*掩码字符串中的每个占位符都替换为\d,后者代表单个数字。

$mask = "***42*12*4**";
$input = "128420120400";
$regex = str_replace("*", "\d", $mask);  // \d\d\d42\d12\d4\d\d
if (preg_match("/^" . $regex . "$/", $input)) {
    echo "MATCH";
}
Run Code Online (Sandbox Code Playgroud)