This question already has an answer here:
Reference - What does this regex mean?
                                
                                    (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