preg_quote takes a delimiter argument

Interpolating user input into a pattern is how a search box becomes a regular expression injection. preg_quote() escapes the metacharacters, but its default output is still not safe to drop between two slashes.

$term = 'price/qty (net)';

preg_quote($term);       // price/qty (net)   — the / is untouched
preg_quote($term, '/');  // price/qty (net)  — safe between slashes

The second argument tells it which delimiter you are going to use, and it escapes that too. Forgetting it produces a pattern that fails to compile on some inputs and silently changes meaning on others. If the term is genuinely a literal, strpos() or str_replace() avoids the question entirely.