Pergunta

Eu tenho a seguinte questão;

Aqui está minha corda que estou tentando remover javascript:l(" Da string abaixo:

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

Meu código é;

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

Mas está falhando.

Isso é mais rápido que uma regex substituindo e mais rápida.

Alguma ideia?

Foi útil?

Solução

Você deixou um espaço

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

Outras dicas

Mudar

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

para

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

Sempre que estou tendo esse tipo de problema, tento formatar minha chamada de pesquisa/substituição em um editor monoespacente para ver se alguma coisa sai

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

Formado assim, torna -se óbvio que o 15º caráter da string de pesquisa não corresponde aos 15º caracteres da string que está sendo pesquisada ([] vs. [b]).

Tente remover esse espaço em branco e você estará feliz.

Você pode usar

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

Para obter os mesmos resultados com algum ganho de velocidade. Eu testei velocidades de três funções para que você possa ver como elas se comparam com a velocidade.

$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);

A saída disso na minha máquina

Bayou-La-Batre ")
Bayou-La-Batre ")
Bayou-La-Batre ")
Substramento: 3.7492098808289
STR Substitua: 4.5258920192719
Preg substitua: 5.8815109729767

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top