Как я уже упоминал в комментариях, в вашем регулярном выражении отсутствовали разделители
$fl_array = preg_grep("[A-Z]HITEBOARDS", $array);
Должно быть
$fl_array = preg_grep("/[A-Z]HITEBOARDS/", $array);
Вы можете или должны включить границу слова \b
до и послеword, это предотвратит совпадение частичных слов, таких как (например), если бы у вас было это /\b[A-Z]here\b/
, которое могло бы соответствовать therefore
вместо просто there
.Без границ совпадения могут произойти в начале, середине или конце частичных слов, что, вероятно, не то, что вы хотите.Граница будет соответствовать чему-либо, что \W
или другими словами не \w
или проще [^a-z0-9_]
или по-английски: соответствует чему-либо, не алфавиту, цифре или подчеркиванию, в основном все ваши знаки препинания, специальные символы (кроме _
)и пробелы.
Таким образом, чтобы поместить это в код, было бы это:
$fl_array = preg_grep("/\b[A-Z]HITEBOARDS\b/", $array);
Также вместо:
$array = explode("\n", file_get_contents('test.txt'));
Вы можете использовать
$array = file('test.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
Функция file
предпочтительна, потому что она разбивает файл на массив, основанный на концах строк (не зависит от ОС \r\n
против \n
в качестве разнесения).Кроме того, для лучшей производительности он также имеет два действительно полезных флага.FILE_IGNORE_NEW_LINES
является заданным значением, так как это удаляет окончания строк, которые обычно сохраняются в массиве file()
.FILE_SKIP_EMPTY_LINES
будет в основном делать то, что говорит, и пропускать пустые строки.
Приветствия.