执行以下操作的最佳方法是什么
# if I have the following string :
$str = "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar";
# and I want to remove "o" character after 5-th match so result I need is :
$newStr = "Foo Bar Foo Bar Fo Bar F Bar F Bar F Bar F Bar...";
我知道的方式:
$str = "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar";
$str = explode("o", $str);
$new = "";
$c = 1;
foreach($str as $k) {
if($c>5)
$new .= $k;
else
$new .= $k."o";
$c++;
}
我相信有更好的方法
必须有一百万种方法可以做到这一点。我快速扫描了内置函数,看看是否有第n次出现的strpos
,但没有。
这是一个解决方案。这可能不是最好的,但谁知道呢。
$str = "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar";
for (
$offset = 0, $count = 0;
$count < 5;
$offset = strpos($str, 'o', $offset) + 1, $count++
);
$newStr = substr($str, 0, $offset++) .
str_replace('o', '', substr($str, $offset));
很抱歉出现了疯狂的循环,最近打了太多代码高尔夫!
这是另一种方法。
$str = "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar";
$newStr = implode('o', str_replace('o', '', explode('o', $str, 6)));