Domanda

Ho il seguente problema;

Questa è la mia stringa sto cercando di rimuovere javascript:l(" dalla stringa qui sotto:

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

Il mio codice è;

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

Ma è mancato.

Questo è più veloce di una regex sostituire e più veloce.

Tutte le idee?

È stato utile?

Soluzione

Hai lasciato uno spazio

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

Altri suggerimenti

Cambia

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

a

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

Ogni volta che sto avendo questo tipo di problema, ho provare a formattare la mia ricerca / sostituzione chiamata in un editor di spaziatura fissa per vedere se qualcosa salta fuori

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

con forma simile, diventa evidente che il 15 ° carattere della stringa di ricerca non corrisponde ai 15 ° caratteri della stringa che viene cercato ([] vs [B]).

provare a rimuovere che gli spazi bianchi e si dovrebbe essere felice.

È possibile utilizzare

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

per ottenere gli stessi risultati con un certo guadagno di velocità. Ho testato una velocità di tre funzioni in modo da poter vedere come si confronta con la velocità.

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

L'output di questo sulla mia macchina

  

Bayou-La-Batre ")
  Bayou-La-Batre ")
  Bayou-La-Batre ")
  Substr: 3,7492098808289
  Str sostituire: 4.5258920192719
  Preg sostituire: 5,8815109729767

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top