我在注释行上收到此错误。知道为什么吗?
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
代码低于......
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;
}
答案 0 :(得分:6)
从&
移除&$content
,这是通过引用传递的通话时间。
PHP长期以来一直支持passing arguments by reference;历史上,这可以通过声明函数来通过引用接收参数来实现:
function foo(&$argument) { ... }
foo($value); // pass by reference
或在呼叫站点使用pass-by-reference:
function foo($argument) { ... }
foo(&$value); // call time pass by reference
后一个选项已在PHP 5.4中删除,这就是错误的原因。
答案 1 :(得分:0)
Jon是对的,你必须删除'&amp;'。为了更好的样式,PHP允许仅为定义它的函数传递引用,而不是函数的代码调用。 http://php.net/manual/en/language.references.pass.php的更多详情 在您的情况下,您根本不需要它,因为执行结果无论如何都将被推送到此变量。这是非直观的,但是一些核心PHP函数以这种方式运行