我在注释行上收到此错误.知道为什么吗?
Fatal error: Call-time pass-by-reference has been removed in myfile.php on line 301
Call Stack
# Time Memory Function Location
1 0.0002 245352 {main}( ) ../plugins.php:0
2 0.3016 7149968 plugin_sandbox_scrape( ) ../plugins.php:156
Run Code Online (Sandbox Code Playgroud)
代码如下......
function rseo_doTheParse($tag, $post){
//headings
$keyword = rseo_sanitize3(trim(strtolower(rseo_getKeyword($post))));
$content = rseo_sanitize3($post->post_content);
$match = 0;
$token = '/<'.$tag.'[^>]*>(.*\b'.$keyword.'\b.*)<\/'.$tag.'>/siU';
if(preg_match($token, &$content, $matches)) //THIS IS LINE 301
{
$match = 1;
}
return $match;
}
Run Code Online (Sandbox Code Playgroud)
删除&from &$content,即通过引用传递的调用时间.
PHP长期以来一直支持通过引用传递参数 ; 历史上,这可以通过声明函数来通过引用接收参数来实现:
function foo(&$argument) { ... }
foo($value); // pass by reference
Run Code Online (Sandbox Code Playgroud)
或者在呼叫站点使用pass-by-reference:
function foo($argument) { ... }
foo(&$value); // call time pass by reference
Run Code Online (Sandbox Code Playgroud)
后一个选项已在PHP 5.4中删除,这就是错误的原因.