Preg_grep()正则表达式模式无法按预期工作

时间:2019-03-07 19:45:05

标签: php

我有以下代码,我正在尝试实现这样的效果
-从字符串末尾删除“-”和数字。
-然后检查该值是否匹配。

这是我的 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。
用户名来自数据库,可以是大量。

简而言之,它应该在末尾返回一个破折号和数字,然后应检查值是否相同。如果是,则推送结果,否则不推送。
任何帮助,将不胜感激 !非常感谢

1 个答案:

答案 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()

Sandbox

在这种情况下,您甚至可以在$result = preg_grep('~\b' . $value . '\b~', $usernames);的每一侧添加一个goog,只需要正确的一个即可。