PHP的基本功能集中沒有這樣的東西。但是你可以使用substr_replace()
來實現它。
$sql = "foo (bar, baz, blub) bar (boo, far, faz)";
// only replace first occurance
$firstpos = strpos($sql, ')');
$sql = substr_replace($sql, ', custom_value)', $firstpos, 1);
// only replace second occurance
$secondpos = strpos($sql, ')', strpos($sql, ')') + 1);
$sql = substr_replace($sql, ', 123456)', $secondpos, 1);
echo $sql, PHP_EOL;
結果:
foo (bar, baz, blub, custom_value) bar (boo, far, faz, 123456)
改寫爲可重複使用的功能:
function str_replace_occurance($search, $replace, $subject, $occurance) {
$pos = NULL;
for ($i = 1; $i <= $occurance; $i++) {
$pos = strpos($subject, $search, ($pos===NULL) ? 0 : $pos+1);
}
return substr_replace($subject, $replace, $pos, strlen($search));
}
$sql = str_replace_occurance(')', ', custom_value)', $sql, 1);
$sql = str_replace_occurance(')', ', 1234567890)', $sql, 2);
echo $sql, PHP_EOL;
編輯:重新排序參數,以具有相同的順序和名稱與原始str_replace
的'count'參數實際上是一個變量引用其中'str_replace()'將返回替換出現次數。它不是*限制或偏移參數。 – Kaii 2012-03-29 07:09:13