2013-08-07 3 views
1

PHP 5.2에있는 작은 PHP의 예는 다음과 같습니다preg_replace_callback 구문은 PHP 5.3에서 작동하지만 여기

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 모두에서 작동 구문이 필요합니다 .

감사합니다.

답변

5

Closures 키워드를 사용하여 function 키워드는 PHP 5.3 이후에만 제공됩니다. 5.3 버전 이전에는 create_function을 사용하여 익명의 기능을 정의 할 수 있습니다.

+0

완료. 나는 외부에 콜백 함수를 만들 것이다. 그리고 인수에 이름을 지정하십시오. 너무 빨리 답변을 수락 할 수 없습니다. Hehe. – Jigar

+0

두 번째 링크를'/ ru /'에서'/ en /'로 변경할 수 있습니까? :) – Emissary

+0

oops. 프록시 오류, 감사합니다. 그것은 "스마트 구글"외부 IP 위치 언어를 대체합니다 : p –