Pregunta

Tengo el siguiente problema;

Aquí está mi cadena Estoy tratando de eliminar javascript:l(" de la cadena a continuación:

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

Mi código es;

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

Pero está fallando.

Esto es más rápido que una expresión regular reemplazar y más rápido.

¿Alguna idea?

¿Fue útil?

Solución

Has dejado un espacio

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

Otros consejos

Cambiar

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

a

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

Siempre que estoy teniendo este tipo de problemas, trato de formatear mi búsqueda / reemplazo de llamada en un editor de espacio fijo para ver si algo se sale

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

Formateada de esa manera, se hace evidente que el carácter número 15 de la cadena de búsqueda no coincide con los caracteres 15ª de la cadena que está siendo buscado ([] vs [B]).

Trate de no incluir espacios en blanco y que usted debe ser feliz.

Puede utilizar

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

para obtener los mismos resultados con un cierto aumento de velocidad. He probado velocidades de tres funciones para que pueda ver cómo se comparan con la velocidad.

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

La salida de este en mi máquina

  

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top