我想匹配变量中包含的单词/模式,但只匹配没有空格的单词。请提出建议。
$ var ='look';
$ array =('look','greatlook', 'lookgreat','看起来很棒','看不见', '看起来不好','看','看');
匹配单词:look,greatlook,lookgreat,badlook
非匹配:看起来很棒,看起来很糟糕,看起来(尾随空格),(空间)看起来。
以下函数的语法没问题,但它匹配所有内容
$ match = preg_grep(“/ $ var /”,$ array);
$ match = preg_grep(“/ ^ $ var /”, $阵列); (在开头匹配单词'look')
但是当我包含[^ \ s]时,它会出错
$ match = preg_grep(“/ $ var [^ \ s] /”,$ array);
解析错误:语法错误,意外'^',期待T_STRING或T_VARIABLE
TIA
答案 0 :(得分:1)
正则表达式为^(?=.*look)[^\s]+$
preg_match("/^(?=.*{$var})[^\\s]+$/", $str);
<?
$str = array('look', 'greatlook', 'lookgreat', 'look great', 'badlook', 'look bad', 'look ', ' look');
$var = "look";
$matches = preg_grep("/^(?=.*{$var})[^\\s]+$/", $str);
print_r ($matches);
?>
//output
Array
(
[0] => look
[1] => greatlook
[2] => lookgreat
[4] => badlook
)
答案 1 :(得分:0)
使用:
$match = preg_grep("/^\S*$var\S*$/", $array);
答案 2 :(得分:-1)
$match = preg_grep ("/{$var}[^\s]/", $array);
我认为您需要将变量括在花括号中,因为字符在没有空格的情况下继续。