Можно ли использовать подстановочные знаки с array_search? Я хочу найти часть строки, а затем
что-то вроде (со звездочкой)
print $pos = array_search('abitofastring%', $vars['myarray']); unset($vars['myarray'][$pos]);
Можно ли использовать подстановочные знаки с
array_search
?
Нет, но вы можете использовать регулярные выражения (которые поддерживают подстановочные знаки) и функцию preg_grep
.
Пример:
$array = explode(',', "House,Car,Boat,Horse,Pool Boy"); # remove all strings from array that do not contain "ho" $array = preg_grep('~ho~i', $array, PREG_GREP_INVERT);
Затем массив:
Array ( [1] => Car [2] => Boat [4] => Pool Boy )
Поскольку может быть сложно писать шаблоны регулярных выражений, может быть полезно иметь вспомогательную функцию, которая преобразует ваш шаблон SQL LIKE в регулярное выражение, чтобы это было легче использовать:
$array = explode(',', "House,Car,Boat,Horse,Pool Boy"); # Search for "Ho" at the beginning of each string $regex = like_to_regex('Ho%'); $array = preg_grep($regex, $array, PREG_GREP_INVERT); print_r($array); /** * convert a MySQL LIKE pattern into a pcre pattern */ function like_to_regex($like, $casesensitive = FALSE, $escapechar = '\\') { $pattern = sprintf('~(?<!%1$s)(%1$s{2}|%%|_)~', preg_quote($escapechar)); $tokens = preg_split($pattern, $like, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); foreach($tokens as &$token) { switch($token) { case $escapechar.$escapechar: $token = preg_quote($escapechar); break; case '_': $token = '.'; break; case '%': $token = '.*'; break; default: $token = preg_quote($token); } } return sprintf('~^%s$~%s', implode('', $tokens), $casesensitive ? '':'i'); }