Bu PHP fonksiyonu ile yanlış nedir

4 Cevap php

I PHP ve düzenli ifade için yeni. Ben bazı online örnekler thorugh oluyor ve bu örnek ile geldi:

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>

php.net ama benim için sürpriz çalışmak ve hata almaya devam etmez için:

PHP Parse error:  parse error, unexpected T_FUNCTION

Neden hata olsun?

4 Cevap

PHP en kullanıyorsunuz Anonymous functions: fonksiyonlar buna sahip no name.

Ben senin programını çalıştırdığınızda hiçbir hata alıyorum. Bir PHP < 5.3 üzerinde çalışıyoruz olabilir.

Anonymous functions are available since PHP 5.3.0.

PHP sürümü olarak not use Anonim işlevlerine programını yeniden yazabilirsiniz sorun yaratıyor ise:

<?php

// a callback function called in place of anonymous function.
echo preg_replace_callback('~-([a-z])~','fun', 'hello-world');

// the call back function.
function fun($match) {
    return strtoupper($match[1]);
}

?>

Bu örnek, PHP 5.3 içindir. Muhtemelen eski bir şey (örneğin, PHP 5.2) kullanın.

Bunun yerine bu deneyin:

<?php
function callback($match) {
    return strtoupper($match[1]);
}
echo preg_replace_callback('~-([a-z])~', 'callback', 'hello-world');

Sen önce PHP 5.3.0 'dan bir sürümünü kullanıyor musunuz? Anonymous functions önce o birine sürümlerinde desteklenmez.

Bir phpinfo sayfa ile sürümünü kontrol edebilirsiniz.

Bu ön-5.3 sürümlerinde çalışması gerekir:

echo preg_replace_callback(
        '/-([a-z])/',     
        create_function( '$arg', 'return strtoupper($arg[1]);' ),
        'hello-world'
     );

Selamlar

rbo