Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中查找整词的正则表达式_Php_Regex - Fatal编程技术网

PHP中查找整词的正则表达式

PHP中查找整词的正则表达式,php,regex,Php,Regex,我想要一个PHP代码,带有正则表达式,可以为任何匹配返回整词。例如,如果搜索acI want,它将返回字符串中任何部分包含ac的所有单词。i、 e.如果字符串有facebook或act或face它会将所有单词返回给我,我编写了此代码,但工作不正常 $regx = "/\\b(\\S)*ac(\\S)*/iu"; foreach($values as $value) { echo $value."\n"; preg_match_all($regx

我想要一个PHP代码,带有正则表达式,可以为任何匹配返回整词。例如,如果搜索
ac
I want,它将返回字符串中任何部分包含
ac
的所有单词。i、 e.如果字符串有
facebook
act
face
它会将所有单词返回给我,我编写了此代码,但工作不正常

$regx = "/\\b(\\S)*ac(\\S)*/iu"; 
    foreach($values as $value) 
    {
        echo $value."\n";
        preg_match_all($regx, $value, $matches,PREG_PATTERN_ORDER);
        var_dump($matches);
    }

此正则表达式将返回字符串中包含“ac”的所有单词

$regx = "/\w*ac\w*/iu";
  • \w*=>0个或更多字母
  • ac=>ac
  • \w*=>0个或更多字母
例如:

<?php
    preg_match_all("/\w*ac\w*/iu", 'To be accurate, there are a lot of Stackoverflow accounts.', $matches);
    print_r($matches);
?>

我认为这不是一个正则表达式任务!您可以使用检查成员资格的操作!它只有一个问题。在我的PHP代码中,它将每个单词返回2次。你对解决这个问题有什么想法吗?它第一次返回单词,第二次返回单词。您可以在下面的注释中看到var_dump的结果
array(2){[0]=>array(3){[0]=>string(7)“nachdem”[1]=>string(3)“ach”[2]=>string(8)“Feedback”}[1]=>array(3){[0]=>string(7)“nachdem”[1]=>string(3)“ach”[2]=>string(8)“Feedback”}
我删除了正则表达式中的括号。这解决了重复的问题。是的,现在它可以工作了。但是你能解释一下括号是什么作用导致了重复吗?
$matches[0]
包含了整个正则表达式匹配的内容(
(\w*ac\w*)
)。
$matches[1]
包含括号匹配的内容(
\w*ac\w*
)。两者都提取了相同的信息,因此结果是重复的。更清楚地说:如果要提取与整个正则表达式匹配的内容,则不需要括号来选择要提取的特定部分。
Array
(
    [0] => Array
        (
            [0] => accurate
            [1] => Stackoverflow
            [2] => accounts
        )
)