2010-05-29 21 views
10

Yakın bir gelecekte yakın zamanlı bir kelime okuması yapmam gerekecek ya da bu mümkün değilse, bir çapraz dil karakter sayısı.Bir PHP Kütüphanesi/Çeşitli dillerde Kelimeleri Saymak için Sınıf?

Sözcük sayımı, metnin dilini alarak, verilen metinde yer alan sözcüklerin doğru bir sayısını kastediyorum. Metnin dili bir kullanıcı tarafından belirlenir ve doğru olduğu varsayılır.

Karakter sayısı ile, yukarıda açıklanan aynı dil bilgisine sahip, verilen metin içinde yer alan "muhtemelen bir kelime içinde" karakterlerinin bir sayımıdır.

Eski sayımı çok isterdim, ancak ilgili zorlukların farkındayım. Ayrıca, ikinci sayımın çok daha kolay olduğunun farkındayım, ama eğer mümkün olursa, ilkini çok tercih ederim.

Sadece İngilizce'ye bakmak zorunda kalsaydım, ama her dili burada, Çince, Korece, İngilizce, Arapça, Hintçe vb.

Ben yığın taşması ben set_locale ile nasıl str_word_count gösteren iyi bir tembel programcı *

A simple test olduğum gibi, PHP bunu için varolan bir ürün/yöntem için aramaya başlamak için nereye herhangi bir ipucu olup olmadığını bilmek istiyorum

çalışmıyor ve php.net'in str_word_count sayfasından bir işlev yok.

* http://blogoscoped.com/archive/2005-08-24-n14.html

+2

CJK onlar kelimeleri ayırmak için boşluk kullanmayın çünkü, en zor olacak. – Turnor

+0

Astute gözlem. Buradaki sorumu buraya yazmamın sebebi buydu;) –

+2

Daha önce bir cevap olarak sorduğum soru buydu: "Kelime sayımı" ile ne demek istediğimi anlatabilir misiniz? Bu kelimenin sözlüğünde fiilen var olan bir kelimeyi doğrulamak ister misiniz, yoksa sadece o dilin sınırlayıcıları tarafından ayrılmış ifadelerin sayısını mı arıyorsunuz? – Grantismo

cevap

5

Sayma karakter olan kolay: İşin çetrefilli başlar nerede

echo strlen('一个有十的字符的句子'); // 30 (WRONG!) 
echo strlen(utf8_decode('一个有十的字符的句子')); // 10 

Sayma kelimeler Çin, Japon ve diğer için özel olduğunu sözcük ayırıcı olarak boşluk (veya diğer yaygın "sözcük sınırı" karakterleri) kullanmayan diller. Çince bilmiyorum ve Çince'de kelime sayımının nasıl işlediğini anlamıyorum, bu yüzden bana biraz eğitim vermelisiniz - bu dillerde bir kelime nedir? Herhangi bir özel char veya chars kümesi mi? T9 yazımında Japonca kelimeleri tanımlamanın ne kadar zor olduğuna dair bir şeyler okumayı hatırlıyorum ama artık bulamıyorum.

doğru kelimeleri ayırıcı olarak boşluk veya noktalama karakter kullanmak dilde kelime sayısını dönmelidir aşağıdadır:

count(preg_split('~[\p{Z}\p{P}]+~u', $string, null, PREG_SPLIT_NO_EMPTY)); 
+0

japanese_1000_lorem.docx, 1000 yerine 29 kelime sayıyorum, bir $ string = preg_replace ('# \ {{{. *? \}}} # S', "", $ string); sayım işlevinden önce – ddjikic

+2

'.docx 'ikili bir dosya olmalıdır - bu nedenle bunu yapmak istiyorsanız, muhtemelen bir sözcük doc çözümleyici veya düz metin dosyası kullanmanız gerekir. – Xeoncross

-1

Bir dene:

<? 
function count_words($str){ 
    $words = 0; 
    $str = eregi_replace(" +", " ", $str); 
    $array = explode(" ", $str); 
    for($i=0;$i < count($array);$i++) 
     { 
     if (eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i])) 
      $words++; 
    } 
    return $words; 
} 
echo count_words('This is the second one , it will count wrong as well" , it will count 12 instead of 11 because the comma is counted too.'); 
?> 
+2

Maalesef Çin için hiç çalışmıyor. – deceze

+1

Ben Portekizliyim, 6AM işte burada ... Henüz uyudum ... ama bunu Çince ve her hangi bir dile uyarlayabildikten sonra ... :) – Zuul

+1

Çince, Korece, Japonca (...) don ' t "kullanın. –

İlgili konular