when trying to find a way to strip newline from a multibyte UTF-8 string i got to this function just to discover later that POSIX don't "do" newline so i can't strip them, examples of what i tried are : \r\n , \\r\\n , (\\r\\n) (\\r|\\n)
and got no result
so since i wanted something like mb_nl2br() that's simple i wrote this little recursive function for UTF-8:
<?php
function mb_str_replace($find,$replace,&$str)
{
$i = mb_strpos($str,$find, 0,"UTF-8");
if ($index===false) {return;}
$str = mb_substr($str, 0,$i).$replace.mb_substr($str, $i+mb_strlen($find,"UTF-8"),mb_strlen($str,"UTF-8"));
$this->mb_str_replace($find,$replace,$str);
}
?>
note: moderate unit tesing was done, changed to other encodings
mb_eregi_replace
(PHP 4 >= 4.2.0, PHP 5)
mb_eregi_replace — Harf büyüklüğüne duyarsız çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
Açıklama
$şablon
, string $yeni
, string $dizge
[, string $seçenek = "msri"
] )
dizge içinde şablon
eşleştirilmeye çalışılır, eşleşen parça yenisi ile
değiştirilir.
Değiştirgeler
-
şablon -
Düzenli ifade olarak şablon. Çok baytlı karakterler kullanılabilir. Harf büyüklüğü dikkate alınmaz.
-
yeni -
Yerleştirilecek metin.
-
dizge -
İçinde şablonun aranacağı dizge.
-
seçenek - mb_ereg_replace() işlevindeki gibidir.
Dönen Değerler
Başarı durumunda elde edilen dizgeyle aksi takdirde FALSE ile döner.
Notlar
Bilginize:
Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.
Güvenilmez girdilerle çalışırken e değiştiricisini asla kullanmayın. Özdevinimli önceleme yapılmayacaktır (preg_replace() işlevinde olduğu gibi). Bunu dikkate almazsanız, büyük olasılıkla uygulamanızda uzaktan kod çalıştırma açıkları oluşacaktır.
Ayrıca Bakınız
- mb_regex_encoding() - mbregex işlevleri için geçerli kodlamayı dizge olarak döndürür
- mb_ereg_replace() - Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
Transliterator for cyrillic-to-latin letters for UTF chars:
<?php
function do_translit($st) {
$replacement = array(
"й"=>"i","ц"=>"c","у"=>"u","к"=>"k","е"=>"e","н"=>"n",
"г"=>"g","ш"=>"sh","щ"=>"sh","з"=>"z","х"=>"x","ъ"=>"\'",
"ф"=>"f","ы"=>"i","в"=>"v","а"=>"a","п"=>"p","р"=>"r",
"о"=>"o","л"=>"l","д"=>"d","ж"=>"zh","э"=>"ie","ё"=>"e",
"я"=>"ya","ч"=>"ch","с"=>"c","м"=>"m","и"=>"i","т"=>"t",
"ь"=>"\'","б"=>"b","ю"=>"yu",
"Й"=>"I","Ц"=>"C","У"=>"U","К"=>"K","Е"=>"E","Н"=>"N",
"Г"=>"G","Ш"=>"SH","Щ"=>"SH","З"=>"Z","Х"=>"X","Ъ"=>"\'",
"Ф"=>"F","Ы"=>"I","В"=>"V","А"=>"A","П"=>"P","Р"=>"R",
"О"=>"O","Л"=>"L","Д"=>"D","Ж"=>"ZH","Э"=>"IE","Ё"=>"E",
"Я"=>"YA","Ч"=>"CH","С"=>"C","М"=>"M","И"=>"I","Т"=>"T",
"Ь"=>"\'","Б"=>"B","Ю"=>"YU",
);
foreach($replacement as $i=>$u) {
$st = mb_eregi_replace($i,$u,$st);
}
return $st;
}
?>
