为字符串PHP

时间:2019-02-19 01:30:00

标签: php

我想清理用户的字符串输入。我想避免使用特殊字符和代码符号,例如<>&等,但允许使用spacesingle quotes (')。到目前为止,我所做的是:

$query = preg_replace('/[^A-Za-z0-9\-]/', '', htmlentities($request->search_name, ENT_COMPAT));

当我使用上面的代码对其进行测试时,它还会删除我需要的空格。我们非常感谢您的帮助。

编辑:

如果我键入

mark O'neal"<>!

我上面的代码打印错误:

markOnealquotltgt

它应该输出:

mark O'nealquotltgt

2 个答案:

答案 0 :(得分:1)

您只需要在字符集中添加空格和'个字符:

$search_name = "mark O'neal\"<>!";
echo preg_replace("/[^A-Za-z0-9\- ']/", '', htmlentities($search_name, ENT_COMPAT));

输出:

mark O'nealquotltgt

Demo on 3v4l.org

答案 1 :(得分:1)

忽略使用\s的空间

preg_replace('/[^A-Za-z0-9\-\s]/', ... );