This question already has an answer here:
Reference - What does this regex mean?
(1个答案)
3年前关闭。
我在理解preg_replace函数内部正则表达式中的逻辑时遇到麻烦。具体来说,我在理解括号内插入符号的用法时遇到了麻烦。如果我键入一个与用户名列中任何字母/数字相匹配的字母/数字,我将获得该行的匹配项。当我删除插入符号时,即使不搜索任何内容,数据库中的所有内容也会匹配。有人可以详细说明这里发生的事情吗?谢谢。
(1个答案)
3年前关闭。
我在理解preg_replace函数内部正则表达式中的逻辑时遇到麻烦。具体来说,我在理解括号内插入符号的用法时遇到了麻烦。如果我键入一个与用户名列中任何字母/数字相匹配的字母/数字,我将获得该行的匹配项。当我删除插入符号时,即使不搜索任何内容,数据库中的所有内容也会匹配。有人可以详细说明这里发生的事情吗?谢谢。
$searchq = $_POST['search'];
$searchq = preg_replace("/[^0-9a-z]/i","",$searchq );
$query = mysqli_query($conn, "SELECT * FROM people ".
"WHERE username LIKE '%$searchq%'") or die('Could not search.');
最佳答案
[^0-9a-z]
是字符类([]
)。字符类中的^
是负号,也就是“否”,因此从字面上说是“匹配不是数字或字母字符的任何内容。
关于php - Noob在这里:我在理解此正则表达式搜索背后的逻辑时遇到了麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39479597/
10-09 01:04