Я хотел сделать что-то подобное сам. Используя этот список устаревших функций в PHP 5.3.x , я сделал регулярное выражение для поиска любого использования этих функций:
(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())
(без учета регистра, каждое имя функции включает открывающую скобку, чтобы избежать ложных срабатываний; в противном случае "dl" может вызвать много шума.)
Если вы работаете в системе с find
и grep
, вы можете просто выполнить что-то вроде этого:
find <directory to search> -type f -name '*.php' -exec grep -R -P -H "<above regex>" {} \;
Просто, чтобы привести более конкретный пример, я использовал следующее:
find htdocs -type f -name '*.php' -exec grep -R -P -H "(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())" {} \;
Похоже, теперь мне нужно заменить несколько экземпляров session_register
и session_unregister
на себя!
То же самое можно сделать для устаревших директив и параметров INI.