Вы не можете выполнить такую операцию над массивом. Как вы можете видеть в документации по preg_match()
, в качестве второго параметра используется строка, а не массив.
int preg_match ( string $pattern , string $subject
[, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
Вместо этого вы должны указать ему, на каком элементе вы хотите выполнить операцию.
Если вы хотите сделать это только с одним элементом массива, просто используйте его индекс. Например. первый элемент будет $myarray[0]
, поэтому должно работать следующее:
if (preg_match('/[^\d\w\(\)\[\]\.\-]+/',$myarray[0])>0) echo 'yes';
Если вы хотите сделать это с каждым элементом в вашем массиве, вы можете либо
создать цикл foreach
foreach ($myarray as $element) {
if (preg_match('/[^\d\w\(\)\[\]\.\-]+/',$element)>0) echo 'yes';
}
использовать array_map()
и функцию обратного вызова
function match_callback($element) {
if (preg_match('/[^\d\w\(\)\[\]\.\-]+/',$element)>0) echo 'yes';
}
array_map('match_callback',$myarray);