我有以下问题;

下面是我的字符串我想从下面的字符串中删除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);

以获得与一些速度增益相同的结果。我已经测试了三种功能的速度,所以你可以看到他们如何与速度相比较。

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

的此我的机器上的输出

  

河口 - 拉 - Batre“),点击   河口 - 拉 - Batre“)结果   河口 - 拉 - Batre“)结果   SUBSTR:3.7492098808289结果   STR取代:4.5258920192719结果   预浸料替换:5.8815109729767

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top