Küçük bir kod parçacığı için bir php script tanı Need

3 Cevap php

Biri ben gerçekten yanlış yapıyorum bana ne söyleyebilirsin? Ben fındık gidiyorum, aşağıdaki kod localhost / WIN mükemmel çalışır ve ben host / linux üzerinde çalıştığınızda uyarı verir:

$lines = file('english.php');
foreach($lines as $line) {
    $matches=array();
    if (preg_match('/DEFINE\(\'(.*?)\',\s*\'(.*)\'\);/i', $line, $matches)) {
        $keys[] = $matches[1];
        $values[] = $matches[2];
    }
}
$lang = array_combine($keys, $values);

Ben host üzerinde test ederken:

Warning: array_combine() expects parameter 1 to be array, null given in /home/xx/public_html/xx on line 616

Ancak yerel sunucu (Windows XP) mükemmel çalışır. Ben yanlış yapıyorum bilmiyorum, bana bu kabus gidermek yardım lütfen: (

Teşekkürler.

3 Cevap

Ben kodu ile Açıkçası yanlış bir şey görmüyorum, ama bunları birleştirerek yerine sadece kombine dizi bina daha sonra ayrı diziler bina ve konum neden ben merak ediyorum:

// Make sure this file is local to the system the script is running on.
// If it's a "url://" path, you can run into url_fopen problems.
$lines = file('english.php');

// No need to reinitialize each time.
$matches = array();

$lang = array();
foreach($lines as $line) {
    if (preg_match('/DEFINE\(\'([^\']*)\',\s*\'([^\\\\\']*(?:\\.[^\\\\\']*)*)\'\);/i', $line, $matches)) {
        $lang[$matches[1]] = $matches[2];
    }
}

(Ben de tek tırnak işlemek için regex değiştirdik.)

Php sürümleri aynı mı?

Ve sen host için tüm dosyalarınızı transfer emin misin?

Bu her yerde başlatılıyor değil çünkü $ tuşları değişken null görünüyor.

Benim en iyi tahminim sunucu üzerinde turkish.php dosya boş (ya da mevcut değil), bu yüzden bunu okumaya çalıştığınızda hiçbir şey değişken $ tuşları kaydedilir;

Foreach deyimi önce bu değişken için başlangıç ​​değeri eklemeyi deneyin:

$lines = file('english.php');
$keys = array();
foreach($lines as $line) {
$matches=array();
    if (preg_match('/DEFINE\(\'(.*?)\',\s*\'(.*)\'\);/i', $line, $matches)) {
        $keys[] = $matches[1];
        $values[] = $matches[2];
    }
}
$lang = array_combine($keys, $values);

Bu şekilde, dosya almıyorsa veya bile mümkün olan tüm yolları kapsayan konum boş.

Her zaman kod şey değil, tam tersi yanlış gidebiliriz gerektiği gibi :)