2009-11-21 47 views
0

我有以下问题;PHP的str_replace问题或错误?

这里是我的字符串,我想从下面的字符串中删除javascript:l("

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

我的代码;

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

但它失败了。

这比正则表达式更快,速度更快。

任何想法?

回答

3

您留下了空间

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

非常感谢您的帮助 – cocacola09 2009-11-21 20:36:36

1

变化

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

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

非常感谢您的帮助 – cocacola09 2009-11-21 20:39:26

1

每当我有这样的问题,我尝试格式化我的搜索/替换中调用一个等宽编辑器来查看是否有任何东西弹出

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

这样形成的,很显然,搜索字符串的第15个字符与正在搜索的字符串的第15个字符([]与[B])不匹配。

尝试删除该空白,你应该很高兴。

+0

非常感谢您的帮助 – cocacola09 2009-11-21 20:36:06

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

这在我的机器

河口 - 拉 - Batre “)
河口 - 拉 - Batre”)
河口 - 拉 - Batre“)
SUBSTR上的输出:3.7492098808289
海峡替换:4.5258920192719
的Preg取代:5.8815109729767