Frage

Ich habe folgendes Problem;

Hier ist meine Zeichenfolge Ich versuche javascript:l(" aus der Zeichenfolge zu entfernen unter:

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

Mein Code ist;

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

Aber es versagt.

Dies ist schneller als ein regex ersetzen und schneller.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie hinterließ einen Raum

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

Andere Tipps

Ändern

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

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

Jedes Mal, wenn ich diese Art von Problem habe, versuche ich die Formatierung meiner Suchen / Ersetzen-Aufruf in einem dicktengleiche Editor, um zu sehen, ob etwas herausspringt

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

Format so, wird es offensichtlich, dass das 15. Zeichen des Suchbegriffs nicht die 15. Zeichen überein der Zeichenfolge, die durchsucht ([] gegen [B]).

Versuchen Sie das Leerzeichen entfernen und Sie sollten glücklich sein.

Sie können mit

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

die gleichen Ergebnisse mit einem gewissen Geschwindigkeitsgewinn zu erhalten. Ich habe Geschwindigkeiten von drei Funktion getestet, so können Sie sehen, wie sie mit Geschwindigkeit vergleichen.

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

Der Ausgang dieses auf meinem Rechner

  

Bayou-La-Batre ")
  Bayou-La-Batre ")
  Bayou-La-Batre ")
  Substr: 3,7492098808289
  Str ersetzen: 4,5258920192719
  Preg ersetzen: 5,8815109729767

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top