PHP eregi için iyi bir alternatif ()

7 Cevap php

7 Cevap

stristr tam olarak aynı sonucu elde eregi olarak (en azından düzenli ifadeler kullanmayın zaman):

if (!stristr($fileName, '.php'))
    $filename.='.php';

Sen de bir "sahte" eregi bu şekilde yapabiliriz:

if (!function_exists('eregi')) {
    function eregi($find, $str) {
        return stristr($str, $find);
    }
}

Update: O stristr eregi Bu özel durumda (uzantısı kontrol) için, daha iyi ile gitmek istiyorum yapar ve düzenli ifadeleri kabul etmez Not vartec çözeltisi.

Of course you are aware, that this doesn't do what you expect it do do? In regexp '.' means any character, so eregi('.php',$fileName) means filename with any character followed by 'php'. Thus for example "blabla2PHP.txt" will match your regexp.

Şimdi ne yapmak istediğiniz şudur:

$file_ext = pathinfo($filename, PATHINFO_EXTENSION);
if(strtolower($file_ext) != 'php') 
   $filename .= '.php';

eregi() olup preg_match() i değiştiricisiyle için iyi bir alternatif:

if (! preg_match('/.php/i',$fileName))
      $filename.='.php';

Geçenlerde PHP 5 için güncellendi beri bu deneyin, ben bu oldukça çok kullanıyorum.

Önceden:

if(eregi('-', $_GET['id'])
{
   return true;
}

Şimdi bu kullanıyorum - o kadar iyi çalışır.

if(preg_match('/(.+)-(.+)/', $_GET['id'])) {
{
   return true;
}

Sadece aşağıdaki ile kodunuzu değiştirin ve sizin kodu içinde farkı herhangi bir aksama olmamalıdır. Çünkü bir çok kullanılan zaman vardır performans sorunları neden PHP remove eregi () bu kadar merak ediyorsanız, bu yüzden arama daha spesifik olarak ne o () preg_match kullanmak daha iyidir eğer öyleyse daha iyi bir performans ve render süreleri vardır.

Bana bu sizin için nasıl çalıştığını bildirin.

Belki bunun yerine yapmak için kod üstlenmeden düşünmelisiniz:

if (substr($fileName, -4, 4) !== '.php')
    $fileName .= '.php';

Bu soruya diğer yanıtlar belirtildiği gibi, eregi('.php') dosyasındaki 'php' Anywere (sadece sonunda) tarafından takip şey için arayacaktır.

Ben genellikle oluşturmak ve EndsWith fonksiyonu; ya da bu tarz şeyler için diğer basit dize işleme fonksiyonları.

function endsWith($string, $end){
    return substr($string, -strlen($end)) == $end;
}

if (! stristr($fileName, '.php')) $filename.='.php';

MOFF en answser geriye parametreleri vardı.

http://php.net/manual/en/function.stristr.php