遍历数组,在正则匹配前进行strpos查找%确定有urlencode的字符后才进行decode并做中文匹配。
更进一步的话,可以自行计算%后面的字符序列是否为普通ASCII字符。不过我觉得你可以从更根源的地方开始考虑这个问题,一开始选取数据的时候,就用:SELECT name FROM tbl_name WHERE name regexp '%[a-zA-Z0-9]{2}'这样的话读到内存中的数据量会少一些,可以前面查找%的步骤,性能方面应该也会更好一些。
更进一步的话,可以自行计算%后面的字符序列是否为普通ASCII字符。不过我觉得你可以从更根源的地方开始考虑这个问题,一开始选取数据的时候,就用:SELECT name FROM tbl_name WHERE name regexp '%[a-zA-Z0-9]{2}'这样的话读到内存中的数据量会少一些,可以前面查找%的步骤,性能方面应该也会更好一些。
使用文件缓存的思路,先将所有数据读出,进行字符匹配,完成后把数据存入到文本中。设置一个数据更新的时间段,每次有提交查询的时候先检查数据缓存文件是否存在,时间是否在设置的时间段内,如果满足条件则直接拿关键子文本数据里的数据进行匹配,否则从新重数据库中重新获取数据。效率相对要比每次去读完数据库数据完成要高!各位PHP大哥们可否帮小弟看看这方法可行否?
你的查询语句? 如果有精确的关键字,其urlencode的结果是确定的,肯定可以用于查询。