Benim preg_replace koda alternatif

3 Cevap php

İşte benim kod ... temelde herhangi bir diziden bir sayfa url ile değiştirir daha sonra bir değişken sayfa-NUMARA-içinde ve bulur

$content_text = preg_replace("/page-(\d+)-/sie", '$pageurl[$1]', $content_text);

Bulduğu SAYISI dizide değil ve bir hata döndürür kadar bir tedavi çalışır ...

Ben bunun yerine yapabileceği başka etkili bir yolu var mı?

Basit çünkü ben yukarıda benim kod sevdim ama ben daha karmaşık kodu kullanmak zorunda kalabilirsiniz ...

3 Cevap

Sözdizimi% 100 doğru olmayabilir ama;

$content_text = preg_replace_callback('/page-(\d+)-/sie',
    create_function('$number',
                    'global $pageurl;
                    if (in_array($number, $pageurl)){
                        return $pageurl[$number];
                    }else{
                        /*do something*/
                    };'),
    $content_text);

EDIT eklemeyi unuttum "global $ PAGEURL;" İşlevin içindeki değişken erişmek mümkün.

Madde dizi ya da değil olup olmadığını görmek için yerine içine bir çek ekleyin. Eğer bir işlev kodu koymak ve bunun yerine e bayrağının preg_replace_callback kullanıldığında okunması daha kolay olabilir.

Neden, preg_match_all ile numaralarını almak Elindeki numaraları dayalı bir yedek dizi oluşturmak ve sonra bu diziler ile bir str_replace koşmak yok. Bu şekilde, 1-1 yedek temin ederim.