替换php中每次出现的字符串?

时间:2012-12-09 16:27:39

标签: php string replace str-replace

我想用php做一些简单的替换。

首次出现“xampp”时,将其替换为“xp”。

对于“xampp”的第二次/最后一次出现,将其替换为“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是返回字符串匹配的位置。它不会通过指定的特定事件替换字符串。那么有什么方法可以完成这项任务吗?

1 个答案:

答案 0 :(得分:1)

您可以使用preg_replace_callback执行此操作,但如果替换不一定是连续的,则strpos应该更有效。

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));
}

Here's a demo.