【发布时间】:2009-11-21 20:13:11
【问题描述】:
我有以下问题;
这是我试图从下面的字符串中删除 javascript:l(" 的字符串:
javascript:l("Bayou-La-Batre");
我的代码是;
$q_string = str_replace('javascript:l(" ','',$row['1']);
但它失败了。
这比正则表达式替换更快。
有什么想法吗?
【问题讨论】:
标签: php str-replace
我有以下问题;
这是我试图从下面的字符串中删除 javascript:l(" 的字符串:
javascript:l("Bayou-La-Batre");
我的代码是;
$q_string = str_replace('javascript:l(" ','',$row['1']);
但它失败了。
这比正则表达式替换更快。
有什么想法吗?
【问题讨论】:
标签: php str-replace
你留了一个空格
$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 个字符不匹配([ ] vs. [B])。
尝试删除该空格,您应该会很高兴。
【讨论】:
你可以使用
$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")
子字符串:3.7492098808289
字符串替换:4.5258920192719
预替换:5.8815109729767
【讨论】: