我需要帮助来优化正则表达式

时间:2014-06-03 12:44:20

标签: php regex

我正在为obsfucate php项目创建一个脚本。我想重命名变量,我正在尝试,但我不能。

例如......

El día $dia me he comprando una $casaca en la tienda;

我想更改

El día $wdw_SDw_x me he comprando una $wdw_WsS en la tienda;

我有这段代码

if($v != 'this' && $v != 'GLOBALS' && $v != '_SERVER' && $v != '_GET' && $v != '_POST' && $v != '_FILES' && $v != '_REQUEST' && $v != '_SESSION'
    && $v != '_ENV' && $v != '_COOKIE' && $v != 'php_errormsg' && $v != 'HTTP_RAW_POST_DATA ' && $v != 'http_response_header' && $v != 'argc' && $v != 'argv')
{
    $file_content = preg_replace(('/\W(\$' . $v . ')\W/'), ('$' . '_' . $v), $file_content);
    //$file_content = str_replace('$' . $v, '$' . md5($GLOBALS['key'] . $v), $file_content);
}

这很有效,但我只需要单独改变单词。

"return $this->db->query($sql)->row()->Total == 0 ? true : false;";

但是不起作用

return$_this->db->query$_sql->row()->Total == 0 ? true : false;

我不想更改预定义变量,如:

$ GLOBALS,$ _SERVER,$ _GET,$ _POST,$ _FILES,$ _REQUEST,$ _SESSION,$ _ ENV,$ _COOKIE,$ php_errormsg,$ HTTP_RAW_POST_DATA,$ http_response_heade,$ argc,$ argv

1 个答案:

答案 0 :(得分:0)

你错过了'?'在第二个\W之后,导致它是可选的。

$file_content = preg_replace(('/\W(\$' . $v . ')\W?/'), ('$' . '_' . $v), $file_content);