php str_replace sorunu veya bug?

4 Cevap php

Ben şu sorunu var;

İşte aşağıda dizeden javascript:l(" kaldırmak için çalışıyorum benim dize:

javascript:l("Bayou-La-Batre");

Benim kod;

$q_string = str_replace('javascript:l(" ','',$row['1']);

Ama başarısız oluyor.

Bu yerine bir regex daha hızlı ve daha hızlıdır.

Herhangi bir fikir?

4 Cevap

Sen bir boşluk bıraktı

$q_string = str_replace('javascript:l("','',$row['1']);

Değişim

$q_string = str_replace('javascript:l(" ','',$row['1']);

karşı

$q_string = str_replace('javascript:l("','',$row['1']);

Ben bu tür sorunu yaşıyorum zaman, benim arama biçimlendirmeyi deneyin / bir şey çıkana görmek için boşluklu bir editörü çağrıyı değiştirebilir

$q_string = str_replace('javascript:l(" ', '', 
                        'javascript:l("Bayou-La-Batre")';

Böyle format, bu arama dizesi 15 karakter ([] vs [B]) arandı ediliyor dize 15 karakter eşleşmiyor belli olur.

O boşluk kaldırmayı deneyin ve mutlu olmalıdır.

Sen kullanabilirsiniz

$q_string = substr($row['1'], 14);

Bazı hız kazancı ile aynı sonuçları elde etmek. Eğer onlar hızı ile karşılaştırmak nasıl görmek böylece üç işlevi hızları test ettik.

$string = 'javascript:l("Bayou-La-Batre")';

$str_replace = function($string) {
    return str_replace('javascript:l("', '', $string);
};

print $str_replace($string) . "\n";

$substr = function($string) {
    return substr($string, 14);
};

print $substr($string) . "\n";

$preg_replace = function($string) {
    return preg_replace('/^[a-z:\(]+"/', '', $string);
};

print $preg_replace($string) . "\n";

function measure($function, $string) {
    $start = microtime(true);
    for($i = 0; $i < 1000000; $i++) {
        $function($string);        
    }
    return microtime(true) - $start;
}

print 'Substr: ' . measure($substr, $string) . "\n";
print 'Str replace:' . measure($str_replace, $string) . "\n";
print 'Preg replace:' . measure($preg_replace, $string);

Benim makinede bu çıkışı

Bayou-La-Batre")
Bayou-La-Batre")
Bayou-La-Batre")
Substr: 3.7492098808289
Str replace:4.5258920192719
Preg replace:5.8815109729767