質問

私は次の問題があります。

はここで私は以下の文字列から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番目の文字がのビーイングが検索する文字列([]対[B])。

の15番目の文字と一致しないことが明らかになる

その空白を削除してください、あなたは幸せでなければなりません。

あなたが使用することができます。

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

私のマシン上でこの出力の

  

バイユーラバトレ」)
  バイユーラバトレ」)
  バイユーラバトレ」)
  SUBSTR:3.7492098808289
  置き換えるSTR:4.5258920192719
を   プリプレグ置き換える:5.8815109729767

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top