berkantipek adlı üyeden alıntı: mesajı görüntüle
Başlarda ve sonlarda derken ne demek istiyorsunuz onu anlamadım. Örnek bir subject atar mısınız?

Ben şöyle bir şey yaptım: https://repl.it/repls/ViciousVapidCleaninstall
Hocam mesela türkçe karakterlerden herhangi biri cümle başında olduğu zaman:
Örneğin: çin , niç veya İnç gibi.
Döngüden gelen örnek:
$result = preg_replace('/\bçin\b/ui', 'chaina', $array);
veya
$result = preg_replace('/\bniç\b/ui', 'herhangi_bir_şey', $array);
veya
$result = preg_replace('/\binç\b/ui', 'inc', $array);
gibi türkçe karakterler kontrol edilmek istendiğinde $array içinde bulunan aynı kelimeleri bulmuyor. regexr[.]com sitesinde de denediğimde aynı sonuçla karşılaşıyorum.

Fakat türkçe karakter kelimenin ortasında herhangi bir yerde olduğu zaman herhangi bir sorun olmuyor.
Mesela Örneğin: içine, şına
Döngüden gelen örnek:
$result = preg_replace('/\biçin\b/ui', 'herhangi_bir_şey', $array);
Array içinde eşleşmesi gerekenleri bulup değiştiriyor. Sorun olmuyor. Aynısını regexr[.]com sitesinde de denediğimde burada da başarılı sonuç döndürüyor.

Belirttiğiniz kodu da denedim. Fakat gene bulamadı.

Edit:

Ben bu yolu kısa yoldan çözemedim.
Her zaman kendi yöntemlerimi en son çare olarak kullanırım.Burada da son çare kullanmak zorunda kaldım.

Benim gibi sorun yaşayanlar olursa aşağıda ki yöntem ile sorununa çözüm bulabilir. Ben hayat kurtarmak için bu çözümü ürettim kendi kendime. İlerleyen dönemlerde sorunun daha basit yöntemini bulursam paylaşıyor olacağım.

Önce bir fonksiyon oluşturdum.

Aşağıda ki fonksiyon ile türkçe karakter kodlarını kendi yöntemimle ürettiğim benzersiz bir değere dönüştürdüm. Bunun için önce türkçe karakterin hex karşılığını aldım, çakışmama olasılığını arttırmak için bu hex kodların başına ve sonuna ikişer tane x karakteri ekledim.

function tr_to_hex($str, string $q=NULL){
$q = $q && ($q == 'encode' || $q == 'decode') ? $q : 'encode';
$tr_chars = array('ı','İ','ç','Ç','ş','Ş','ö','Ö','ü','Ü','ğ','Ğ');
$hex_chars = array('xx0131xx','xx0130xx','xx00e7xx','xx00c7xx','xx015fxx','xx015exx','xx00f6xx','xx00d6xx','xx00fcxx','xx00dcxx','xx011fxx','xx011exx');
if($q == 'decode'){
$results = str_replace($hex_chars, $tr_chars, $str);
}else{
$results = str_replace($tr_chars, $hex_chars, $str);
}
return $results;
}
Örnek:
echo tr_to_hex('Çiçek', 'encode')
Sonuç: xx00e7xxixx00e7xxek
echo tr_to_hex('xx00e7xxixx00e7xxek', 'decode')
Sonuç: Çiçek

Bu şekilde türkçe karakter kodlarından kaçınmış oluyorum ve türkçe karakter cümlenin neresinde olursa olsun sorunsuz değişim yapabiliyorum.

En basit yoldan:
$result = tr_to_hex(preg_replace(tr_to_hex('Çiçek', 'encode'), 'değiştirilecek_değer', tr_to_hex($array, 'encode')), 'decode');
Preg'de bulunması gereken değerler ile bulunacak değerleri fonksiyonum ile encode yaparak türkçe karakterleri değiştirdim.
En sonda ise çıkan sonucu decode ile orjinal haline getirdim.

Bu şekilde çözüm yolu ürettim. Olur da benim gibi sorun yaşayanlar olursa bu şekilde ihtiyacını giderebilirler.
,
Saygılarımla...



Edit 2:

Bunun yanında bir çözüm yöntemi daha keşfettim. Fonksiyonsuz ve en sade biçimde. Çok zamanımı harcadı fakat preg_replace olayını daha iyi kavramış oluyorum

$resutl = preg_replace('/\b(i|İ)n(ç|Ç)\b/iu', 'inc', $array);
Türkçe karakterleri parantez içine alarak büyük ve küçük harfi olacak şekilde iki koşul belirterek te bu işin içinden çıkabilirsiniz.

(i|İ)n(ç|Ç) gibi..

Tekrar saygılarımla