【问题标题】:preg_replace_callback syntax works in PHP 5.3 but not in PHP 5.2preg_replace_callback 语法在 PHP 5.3 中有效,但在 PHP 5.2 中无效
【发布时间】:2013-08-07 07:45:54
【问题描述】:

这是一个小的 php 示例:

echo '<pre>';

// Execute httpd.exe -V to find apache version
exec('"E:\Program Files\AMPPS\apache\bin\httpd.exe" -V', $out, $ret);

// preg_replace_callback to fetch version
echo $apver = preg_replace_callback('/Server version: Apache\/(.*?) \((.*?)\)/is', function ($matches){ return $apache_version = trim($matches[1]); } ,$out[0]);
echo "\n";
echo "\n";

// Test this file with PHP 5.3
exec('"E:\Program Files\AMPPS\php\php.exe" -l "'.__FILE__.'"', $out1, $ret1);
print_r(array($out1, $ret1));

// Test this file with PHP 5.2
exec('"E:\Program Files\AMPPS\php-5.2\php.exe" -l "'.__FILE__.'"', $out2, $ret2);
print_r(array($out2, $ret2));

输出:

2.4.6

Array
(
    [0] => Array
        (
            [0] => No syntax errors detected in E:\Program Files\AMPPS\www\preg_replace.php
        )

    [1] => 0
)
Array
(
    [0] => Array
        (
            [0] => 
            [1] => Parse error: syntax error, unexpected T_FUNCTION in E:\Program Files\AMPPS\www\preg_replace.php on line 5
            [2] => Errors parsing E:\Program Files\AMPPS\www\preg_replace.php
        )

    [1] => -1
)

我需要一种适用于 PHP 5.2 和 5.3 的语法。

谢谢。

【问题讨论】:

    标签: php php-5.3 php-5.2 preg-replace-callback


    【解决方案1】:

    使用function 关键字的Closures 定义仅适用于PHP 5.3 5.3 之前的版本,您只能使用create_function 定义匿名函数。

    【讨论】:

    • 完成。我将在外面创建一个回调函数。并在参数中指定其名称。不能这么快接受答案。呵呵。
    • 您能否将您的第二个链接从/ru/ 更改为/en/ :)
    • 哎呀。代理错误,谢谢。那是“智能谷歌”替代外部 IP 位置语言:p
    猜你喜欢
    • 2015-02-05
    • 2017-07-12
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2013-01-24
    • 2012-11-06
    相关资源
    最近更新 更多