0

我有以下问题;

这是我试图javascript:l("从下面的字符串中删除的字符串:

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

我的代码是;

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

但它失败了。

这比正则表达式替换更快且更快。

有任何想法吗?

4

4 回答 4

3

你留了一个空间

$q_string = str_replace('javascript:l("','',$row['1']);
于 2009-11-21T20:15:59.803 回答
1

改变

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

$q_string = str_replace('javascript:l("','',$row['1']);
于 2009-11-21T20:17:04.183 回答
1

您可以使用

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

获得相同的结果并获得一些速度增益。我已经测试了三个功能的速度,因此您可以看到它们与速度的比较。

$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

于 2009-11-21T21:15:57.623 回答
1

每当我遇到这种问题时,我都会尝试在等宽编辑器中格式化我的搜索/替换调用,看看是否有任何弹出

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

像这样格式化,很明显搜索字符串的第 15 个字符与正在搜索的字符串的第 15 个字符不匹配([ ] vs. [B])。

尝试删除该空格,您应该会感到高兴。

于 2009-11-21T20:22:03.677 回答