-1

执行以下操作的最佳方法是什么?

# 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++;
  }

我相信有更好的方法来做到这一点。

4

1 回答 1

1

必须有一百万种方法来做到这一点。我快速浏览了内置函数,看看是否有第strposn出现的 a ,但没有。

这是一个解决方案。它可能不是最好的,但谁知道呢。

$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)));
于 2012-08-01T10:00:26.930 回答