Bunun yerine preg_replace
, substr_replace
to do your string replacement and strpos geçmek parametrelere dayalı dize içinde başlangıç ve bitiş noktalarını bulmak için kullanabileceğiniz çalışma. Sizin desen basit bir dize, bu yüzden normal bir ifade gerektirmez ve substr_replace (aradığınız ne gibi görünüyor ki) değiştirmeleri yapmak için dize içinde bir başlangıç ve bitiş noktasını belirtmek için izin verir.
EDIT:
Eğer kontrol bir sürü yapmak zorunda gibi Yorumlarınız dayanarak, bu sesler. Ben bu test değil, bu yüzden bir hata ya da iki tane var, ama bu gibi bir işlevi deneyebilirsiniz:
function replace($number, $pattern, $replacement)
{
$input = "The quick sample_text_1 56 quick sample_text_2 78 fox jumped over the lazy dog.";
$end_pos = strpos($input, $number);
$output = "";
if($end_pos !== false && substr_count($input, $pattern, 0, $end_pos))
{
$start_pos = strrpos(substr($input, 0, $end_pos), $pattern);
$output = substr_replace($input, $replacement, $start_pos, ($start_pos + strlen($pattern)));
}
return $output;
}
Bu işlev aşağıdakileri yapar:
- İlk olarak, "numara" parametresi bile dize varolduğunu kontrol (
$end_pos !== false
)
- Desen dize teh başında ve sayısının pozisyonu arasında en az bir kez bulunup bulunmadığını kontrol edin (
substr_count($input, $pattern, 0, $end_pos)
)
- Alt dize içindeki desen son oluşumu konumunu almak için
strrpos
işlevini kullanın
- Kullanarak değiştirme dizesi eklemek için başlama pozisyonu ve desen uzunluğunu kullanın
substr_replace