Sorunun sebebi çok basit. Yazının devamı substr() fonksiyonu ile kesilip sonuna 3 nokta konuluyor otomatik olarak. Ve kesilen bu yerler Türkçe karakterlere denk geldiği zaman ve Türkçe karakterler 1 değil 2 veya daha fazla yer kapladığı için harfi ortadan bölünce anlamsız bir görüntü oluşuyor. Yani ortada bir sorun yok, Türkçe karakter şanssızlığı.
Eğer hostunuz destekliyorsa çözümü burda:
https://scetinkaya.com/php-substr-turkce-karakter-sorunu-cozumu/