Найти элемент массива, содержащий только определенный набор символов в PHP

Мне нужно найти только элементы массива, которые имеют определенный набор букв и любого символа до или после набора букв.

У меня есть такие массивы:

$sample = array("sten", "netff", "enet", "denet"); $value = array('e', 'n', 't'); 

Мне нужно найти значения из массива $sample которого есть символы 'e,n,t' и один или два символа до или после (с обеих сторон, а не с обеих сторон) слова соответствия. Если я ищу с рисунком e, n, t и 1 буквой до или после (с обеих сторон, а не с обеих сторон), результат будет

 array("sten", "enet") 

и если я ищу с рисунком e, n, t и 2 буквами до или после (обе стороны, а не обе стороны), результат будет

 array("netff", "denet") 

Я попробовал regex с preg_grep() но он не работает:

1 буква до или после (обе стороны, а не обе стороны):

 $result = preg_grep("/^(?:.{1}".$value."|".$value.".{1})$/", $sample); 

2 письма до или после (обе стороны, а не обе стороны):

 $result = preg_grep("/^(?:.{2}".$value."|".$value.".{2})$/", $sample); 

Related of "Найти элемент массива, содержащий только определенный набор символов в PHP"

Я собираюсь предположить, что вы уже предварительно отфильтровали все строки длиной 4 или 5 символов – если нет, вы можете раскомментировать мою первую функцию фильтра.

Входы:

 $findgroup=['eaten','enter','tend','sten','neat','dents','enet','netty','teeth','denet','teen','spent']; $values=['e','n','t']; как $findgroup=['eaten','enter','tend','sten','neat','dents','enet','netty','teeth','denet','teen','spent']; $values=['e','n','t']; 

Метод:

 //$findgroup=array_filter($findgroup,function($v){return strlen($v)==4 || strlen($v)==5;}); $findgroup=array_filter($findgroup,function($v)use($values){ return sizeof(array_intersect(array_unique(str_split(substr($v,0,3))),$values))==3 || sizeof(array_intersect(array_unique(str_split(substr($v,-3))),$values))==3; }); var_export($findgroup); // omitted: neat, dents, teeth, teen 

Вывод:

 array ( 0 => 'eaten', 1 => 'enter', 2 => 'tend', 3 => 'sten', 6 => 'enet', 7 => 'netty', 9 => 'denet', 11 => 'spent', )