我有以下代码,我正在尝试实现这样的效果
-从字符串末尾删除“-”和数字。
-然后检查该值是否匹配。
这是我的 PHP 代码
$usernames= array("microsoft-2","google-1","google");
$value='google';
$input = preg_quote($value, '~');
$result = preg_grep('~' . $value . '~', $usernames);
echo '<pre>';
print_r($result);
//Array
(
[1] => google-1
[2] => google
)
上面的结果很好,但是问题是,如果我将值设置为“ goog” ,则它返回相同的结果,而我希望它返回空的erray。
用户名来自数据库,可以是大量。
简而言之,它应该在末尾返回一个破折号和数字,然后应检查值是否相同。如果是,则推送结果,否则不推送。
任何帮助,将不胜感激 !非常感谢
答案 0 :(得分:1)
添加分词符\b
$usernames= array("microsoft-2","google-1","google");
$value='goog';
$input = preg_quote($value, '~');
$result = preg_grep('~' . $value . '\b~', $usernames);
echo '<pre>';
print_r($result);
输出
array()
在这种情况下,您甚至可以在$result = preg_grep('~\b' . $value . '\b~', $usernames);
的每一侧添加一个goog
,只需要正确的一个即可。