用更有效的isset()
替换array_key_exists()
的所有实例并进行正则表达式搜索的最佳方法是什么?请不要引用Donald Knuth关于优化的引用,是的,我知道两个函数之间的差异。
这是我目前使用在我的Netbeans搜索和替换:
- 寻找:
array_key_existss*(s*'([^']*)'s*,([^)]*))
替换为:
isset($2['$1'])
效果很好,修改如下:
array_key_exists('my_key',$my_array)
isset($my_array['my_key'])
但是不会拾取这样的实例:
array_key_exists($my_key,$my_array)
不是最优雅的解决方案,但是添加到您当前的正则表达式中,我们发现这两种类型的搜索条件
array_key_exists s * ( s * | | 年代[美元] s *,([^)]*))
我能做的最好的事情是运行第二次搜索并替换为两个参数都使用变量的实例:
array_key_exists($my_key,$my_array)
搜索并替换2:
-
查找:
array_key_existss*(s*($[^,]*)s*,([^)]*))
-
替换为:
isset($2[$1])
如果在升级PHP版本时需要更广泛的范围,而不仅仅是上面的用例:
没有把它清理干净,但是它应该能捕捉到我能想到的所有实例。
搜索:array_key_existss*(s*([^,]*)s*,s*(((w+))?[a-z0-9_$'"{}[]->:]*(())*[a-z0-9$_.{}'"[]->:]*))
替换:
isset($2[$1])