0

phpを使用して簡単な置換を行いたいと思います。

「xampp」が最初に出現する場合は、「xp」に置き換えます。

「xampp」の2番目/最後の出現については、「rrrr」に置き換えます

    $test = "http://localhost/xampp/splash/xampp/.php";

echo $test."<br>";
$count = 0;
$test = str_replace ("xampp","xp",$test,$count);

echo $test."<br>";

$count = 1;
$test = str_replace ("xampp","rrrr",$test,$count);
echo $test;

ドキュメントを調べたところ、$countは文字列が一致する場所のみを返すことであることがわかりました。割り当てられた特定のオカレンスによって文字列が置き換えられることはありません。それで、タスクを実行する方法はありますか?

4

1 に答える 1

1

でそれを行うこともできますがpreg_replace_callbackstrpos置換が必ずしも順次である必要がない場合は、より効率的であるはずです。

function replaceOccurrence($subject, $find, $replace, $index) {
    $index = 0;

    for($i = 0; $i <= $index; $i++) {
        $index = strpos($subject, $find, $index);

        if($index === false) {
            return $subject;
        }
    }

    return substr($subject, 0, $index) . $replace . substr($subject, $index + strlen($find));
}

これがデモです。

于 2012-12-09T16:42:48.063 に答える