Ne PHP Unicode olmayan bilinci
4 Cevap php

Unicode farkında olması gereken bir proje üzerinde çalışıyorum. PHP () bazı giriş kelime sayısını hesaplamak için str_count_words gibi kullanışlı fonksiyonlar sürü sağlar, ancak PHP

Ben ne bu konuda ne yapmalıyım? PHP 6 bile dışarı henüz hala bu yüzden insanların benim yazılımı kullanmak zorunda gerektiren olamaz değil mi ...

Ben sadece sürüm 6 altında olduğu durumda PHP 6 işlevlerini veya kendi kullanacaktır ya string fonksiyonları için bir sarıcı kütüphanesi yazmak gerekir?

4 Cevap

Sen multibyte string comparison işlevlerini kullanabilirsiniz.

Başka iyi bir fikir Wordpress ve Drupal gibi özellikle köklü ve olgunlaştı sistemleri, başkaları bunu nasıl bakıyor olabilir. Bildiğim kadarıyla farkında olduğum gibi, hepsi multibyte fonksiyonları etrafında kendi sarma var.

Ek muhtemelen ilginç kaynaklar:

Multi-byte dizeleri fonksiyonları için, kontrol etmeniz gereken Multibyte String Functions

Örneğin, bir mb_strlen function -- equivalent of strlen vardır, ancak UTF-8 ile birlikte çalıştığı

Ne yazık ki, sadece bu fonksiyonların az, ve tüm str* mutlaka yok, bir mb_str* eşdeğer ... Yine de,% 100 olan bir websiste oluşturmak için kesinlikle mümkündür vardır UTF-8 PHP 5.x

I've created a wrapper class for this in PHP 5 (IMO this is the only reliable way to go), here are some my implementations of the functions you mentioned:

function iki_String_str_word_count($string, $format = 0, $search = null)
{
    $result = iki()->Regex->Match_All($string, '[\p{L}\p{Mn}\p{Pd}\'\x{2019}' . iki()->Regex->Quote($search) . ']+', 0, 'u');

    if ($format == 0)
    {
    	return count($result);
    }

    return $result;
}

function iki_String_strlen($string)
{
    return strlen(utf8_decode($string));
}

Bir open-source project @ SourceForge called PHP UTF-8 fonksiyonların str_* ailesinin bir çok uygular de bulunmaktadır. Kohana PHP Framework, aynı zamanda% 100 UTF-8 uyumlu olduğunu iddia ediyor.

Eğer önermek gibi PHP 6 standart yüklemek olana kadar, bir sarıcı kütüphanesi oluşturabilirsiniz. (Bu yıl uzakta akılda PHP 5 için ISS take-up hızını taşıyan olduğunu.

mb_string functions yolu iyi arada yeterli olduğunu kanıtlayabilir.