【发布时间】:2020-09-14 16:59:37
【问题描述】:
如果字符串遵循某种模式,我尝试创建一个返回 true 的函数
这里是 PHP 代码
<?php
function patternn($p)
{
$p="%".$p."%";
return $p;
}
function like_match($pattern, $subject)
{
$pattern = str_replace('%', '.*', preg_quote($pattern, '/'));
$result=preg_match("/^{$pattern}$/i", $subject);
return $result;
}
$name="144";
$keywordd="14";
$pa=patternn($name);
$ch=like_match($pa,$keywordd);
echo $ch;
?>
当 $name=144 且 $keywordd 为 144 或 144 之前和之后的任何值时返回 true 但是我希望函数在 $keywordd 为 14 或 44 时返回 true
【问题讨论】:
-
您的模式是
^.*144.*$,它不会匹配 14 或 44。您想匹配 2 位数字,其中模式至少接受 3 位数字。 -
你尝试过什么调试问题?
-
如果你想匹配 14、44 或 144 试试
^(?:1?44|14)$
标签: php regex preg-match str-replace