我的代码有什么问题?我在测试服务器上运行了代码,并且代码可以正常工作,但是当我将其上传到生产服务器时,我得到了
Parse error: syntax error, unexpected T_FUNCTION in /hermes/bosweb/web013/b130/ipg.acrsflcom/darayngedbeats/gentest.php on line 10
这是我的代码
$old = "http://darayngedbeats1.s3.amazonaws.com /mp3/CrazyMonsta2.mp3?AWSAccessKeyId=AKIAJXA36ESCLQHCB54Q&Expires=1297279906& Signature=HD36ZQE8yeTIW6JPWKMcciPTiTs%3D"; //enter the key that needs to be converted $search = array(":","?","=","&","%"); $replace = array("%3A","%3F","%3D","%26","%25"); function search_replace($s,$r,$sql) { $e = '/('.implode('|',array_map('preg_quote', $s)).')/'; $r = array_combine($s,$r); return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]]; },$sql); } echo "<br><br>"; $new = search_replace($search,$replace,$old); echo $new; ?>
该错误很可能是由于
return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]]; },$sql);
您可能会使用不支持闭包的PHP 5.2或更早版本。您可以找出正在使用的PHP版本 phpinfo()。
phpinfo()
您可能需要升级到PHP 5.3+,或者使用create_function或编写静态函数并将其作为回调传递。
create_function
这是最后一个选项的示例,使用一个简单的类来存储状态$r:
$r
class My_callback { public function __construct($s, $r) { $this->s = $s; $this->r = $r; } function callback($v) { return $this->r[$v[1]]; } } function search_replace($s,$r,$sql) { $e = '/('.implode('|',array_map('preg_quote', $s)).')/'; $r = array_combine($s,$r); $c = new My_callback($s, $r); return preg_replace_callback($e, array($c, 'callback'), $sql); }