CBSoft adlı üyeden alıntı: mesajı görüntüle
Str_replace kullanmak yerine karakter sayısı kadar döngüye alıp manuel işlem yaparsanız metnin sayıya dönüşmesinden sonra tekrar replace uygulanmasını önlemiş olursunuz.

$metin = "örnek metin 1289495165";
$bul = array("a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö","p","r","s","ş","t","u","ü","v","y","z",".",",","!","?","(",")","'"," ","1","2","3","4","5","6","7","8","9","0");
$degistir = array(1511,1517,1523,1529,1535,1541,1547,1553,1559,1565,1571,1577,1583,1589,1595,1601,1607,1613,1619,1625,1631,1637,1643,1649,1655,1661,1667,1673,1679,1685,1691,1697,1703,1709,1715,1721,1727,1733,1739,1745,1751,1757,1763,1769,1775,1781,1787,1793);

$yeni_metin = '';

for($i = 0; $i<mb_strlen($metin); $i++)
{
	$karakter = mb_substr($metin, $i, 1, 'UTF-8');
	$ara = array_search($karakter, $bul);

	if($ara !== false)
	{
		$yeni_metin .= $degistir[$ara];
	}
	else
	{
		$yeni_metin .= $karakter;
	}
}

echo $yeni_metin;
Fazla vaktim olmadığı için kontrol etme imkânım olmadı ancak sorun olmaması gerekiyor. Siz de denedikten sonra yazabilirseniz yardımcı olmaya çalışırım.
teşekkür ederim, yardımlarından dolayı. Çalışıyor sistem sorunsuz bir şekilde. Allah razı olsun hocam.