【发布时间】:2011-09-03 18:21:29
【问题描述】:
我正在尝试开发一个递归函数,我可以使用它来去除包含多个值的一串实例。
这是我目前所拥有的:
$words = 'one__two_"__three';
$words = stripall(array('__', '"'), '_', $words);
echo $words;
function stripall($values, $replace, $string) {
foreach ($values as $value) {
if (strpos($string, $value)) {
$string = str_replace($value, $replace, $string);
stripall($values, $replace, $string);
}
}
return $string;
}
这里 $words 字符串被去掉了两个下划线 (__) 或引号 (") 的所有实例。或者至少在理论上......
目标返回值为:
one_two_three
但是,我得到的是“one_two___three”
【问题讨论】:
-
它是因为有一个
_,后跟一个",过滤后变成_,然后有一个__,它变成_,导致@ 987654328@ -- 只需将函数内的stripall($values, $replace, $string);更改为:return stripall($values, $replace, $string);即可使用
标签: php string function recursion replace