次の問題があります。
以下の文字列から削除しようとしてjavascript:l("
いる文字列は次のとおりです。
javascript:l("Bayou-La-Batre");
私のコードは;
$q_string = str_replace('javascript:l(" ','',$row['1']);
しかし、それは失敗しています。
これは、正規表現の置換よりも高速です。
何か案は?
次の問題があります。
以下の文字列から削除しようとしてjavascript:l("
いる文字列は次のとおりです。
javascript:l("Bayou-La-Batre");
私のコードは;
$q_string = str_replace('javascript:l(" ','',$row['1']);
しかし、それは失敗しています。
これは、正規表現の置換よりも高速です。
何か案は?
あなたはスペースを残しました
$q_string = str_replace('javascript:l("','',$row['1']);
変化する
$q_string = str_replace('javascript:l(" ','',$row['1']);
に
$q_string = str_replace('javascript:l("','',$row['1']);
この種の問題が発生した場合は常に、等幅エディターで検索/置換呼び出しをフォーマットして、何かが飛び出すかどうかを確認します。
$q_string = str_replace('javascript:l(" ', '',
'javascript:l("Bayou-La-Batre")';
このようにフォーマットすると、検索文字列の15番目の文字が検索対象の文字列の15番目の文字と一致しないことが明らかになります([]と[B])。
その空白を削除してみてください。そうすれば幸せになるはずです。
使用できます
$q_string = substr($row['1'], 14);
ある程度の速度向上で同じ結果を得ることができます。3つの関数の速度をテストしたので、速度との比較を確認できます。
$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);
私のマシンでのこれの出力
Bayou-La-Batre ")
Bayou-La-Batre")
Bayou-La-Batre ")
Substr:3.7492098808289
Str replace:4.5258920192719
Preg replace:5.8815109729767