我正在寻找一个正则表达式,它将准确地识别源代码中引用的任何PHP调用时间传递,以帮助迁移到PHP 5.3。
目前,我有[^=&;]s*&;s*$
,但这不会过滤出赋值情况($var=&;$othervar;
)。
这个正则表达式应该与eclipse兼容(抱歉,不确定eclipse解析的正则表达式是什么风格)。
编辑:这个更接近一点(尽管有点黑客):(?<;!([&;=]s{0,15}))&;s*$
我正在寻找一个正则表达式,它将准确地识别源代码中引用的任何PHP调用时间传递,以帮助迁移到PHP 5.3。
目前,我有[^=&;]s*&;s*$
,但这不会过滤出赋值情况($var=&;$othervar;
)。
这个正则表达式应该与eclipse兼容(抱歉,不确定eclipse解析的正则表达式是什么风格)。
编辑:这个更接近一点(尽管有点黑客):(?<;!([&;=]s{0,15}))&;s*$
php-l
(php-linter)发现调用时间传递引用错误,我使用
find -name *.php -exec php -l {} ; >/dev/null
在linux中
你不能用正则表达式得到这些。使用Tokenizer。您将需要查找&;
,其中左侧的下一个(
(在那里行走时解析括号)前面是T_STRING
而不是T_FUNCTION
。
$tokens = new TokenStream($source);
foreach ($tokens as $i => $token) {
if ($token->is(T_AMP)) {
while ($i--) {
if ($tokens[$i]->is(T_CLOSE_ROUND, T_CLOSE_SQUARE, T_CLOSE_CURLY)) {
$i = $tokens->complementaryBracket($i);
} elseif ($tokens[$i]->is(T_OPEN_ROUND)) {
if ((($tokens[--$i]->is(T_WHITESPACE) && $tokens[--$i]->is(T_STRING))
|| $tokens[$i]->is(T_STRING))
&& !$tokens[--$i]->is(T_WHITESPACE)
&& !$tokens[--$i]->is(T_FUNCTION)
) {
throw new Exception( Call-time pass by reference );
}
break;
}
}
}
}
这利用我的TokenStream包装器。使用本机输出会变得相当困难;)
^(?!^.*(function|foreach|array)).*(.*&$.*)
这应该会有所帮助。
您可以使用以下模式:
/(->|::|call_user_func|call_user_func_callable).*(.*&$/
它将匹配以下字符串:
->($arg1, &$arg2)
->(&$arg1, $arg2)
::($arg1, &$arg2)
::(&$arg1, $arg2)
call_user_func($callback, &$arg2)
$callback, &$arg2)
call_user_func_callable $callback, &$param_arr)
在<code>call_user_func_callable</code>的情况下,无需检查参数数组是否包含引用。在数组中传递引用不被视为逐引用传递调用时间,完全可以。
I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...
<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...
I found this script online that creates a thumbnail out of a image but the thumbnail image is created with poor quality how can I improve the quality of the image. And is there a better way to create ...
如何确认来自正确来源的数字。
Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...
I wonder there is a way to post a message to a facebook business page with cURL? thanks
I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...
How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...