$query = preg_replace("/[^A-Za-z0-9 _.,*&-\/]/", ' ', $query);
будет работать, если вы напишите это в одинарных кавычках, например:
$query = preg_replace('/[^A-Za-z0-9 _.,*&\/-]/', ' ', $query);
Причиной этого является то, что строки, заключенные в ", анализируются для \ n, \ r \ t и т. Д. И $ vars. Таким образом; экранирование / заставляет PHP пытаться найти особое значение для" / ", как в" \ " n "и когда это терпит неудачу, это удаляет обратную косую черту.
Строки, заключенные в ', не анализируются.