2010-05-29 2 views
10

가까운 미래에 언젠가는 언어 간 단어 수를 구현해야합니다. 그렇지 않을 경우 언어 간 문자 수를 구현해야합니다.다양한 언어로 된 단어를 셀 수있는 PHP 라이브러리/클래스?

단어 수로는 텍스트의 언어를 사용하여 주어진 텍스트 내에 포함 된 단어의 정확한 수를 의미합니다. 텍스트의 언어는 사용자가 설정하며 올바른 것으로 가정합니다.

문자 수로는 위에서 설명한 동일한 언어 정보로 주어진 텍스트 내에 포함 된 "가능한 한 단어"문자의 수를 의미합니다.

저는 이전 수를 선호하지만, 관련된 어려움을 알고 있습니다. 나는 또한 후자의 수를 계산하는 것이 훨씬 쉽다는 것을 알고 있지만, 가능하다면 전자를 훨씬 더 선호한다.

방금 ​​영어를보아야 만한다면 좋겠지 만 여기에서는 모든 언어, 중국어, 한국어, 영어, 아랍어, 힌디어 등을 고려해야합니다.

내가 스택 오버플로 내가 set_locale와 방법 str_word_count 보여주는 좋은 게으른 프로그래머 *

A simple test 나처럼, PHP에서이 작업을 수행하기 위해 기존 제품/방법을 찾고 시작하는 위치에 대한 단서가 있는지 알고 싶습니다

작동하지 않으며, php.net의 str_word_count 페이지에서 함수를 호출합니다.

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

+2

CJK들이 단어를 분리하는 공백을 사용하지 않기 때문에, 가장 까다로운 될 것입니다. – Turnor

+0

견고한 관찰. 이것이 내가 여기에 내 질문을 게시 한 이유입니다.) –

+2

이것은 내가 이전에 대답으로 질문 한 질문이었습니다. "단어 수"가 의미하는 바를 구체적으로 설명해 주시겠습니까? 해당 언어의 사전에 단어가 실제로 있는지 확인 하시겠습니까? 아니면 해당 언어의 구분 기호로 구분 된 구문을 찾고 있습니까? – Grantismo

답변

5

계산 문자입니다 쉽게 : 일이 까다로운 시작 위치를

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

계산 단어는 중국어, 일본어 및 기타 위해 특별히입니다 공백 (또는 다른 일반적인 "단어 경계"문자)을 단어 분리 자로 사용하지 않는 언어. 나는 중국어를 구사하지 않으며 중국어로 단어 계산이 어떻게 작동하는지 이해할 수 없으므로 조금 가르쳐 주어야합니다.이 언어로 된 단어는 무엇입니까? 특정 문자 또는 문자 집합입니까? 나는 T9 글쓰기에서 일본어 단어를 식별하는 것이 얼마나 어려웠는지 읽은 것을 기억하지만 더 이상 찾을 수 없습니다.

하면 제대로 단어 구분자로 공백이나 구두점 문자를 사용하는 언어에서 단어의 수를 반환해야 다음

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

japanese_1000_lorem.docx는 1000 대신 29 단어로 계산됩니다. $ string = preg_replace ('# \ {{. *? \}}} # s', "", $ string); count 함수 앞에 – ddjikic

+2

'.docx'는 바이너리 파일이어야합니다. 그래서 이것을 원한다면 워드 문서 파서 또는 일반 텍스트 파일을 사용해야 할 것입니다. – Xeoncross

-1

음, 시도 :

<? 
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

불행히도 중국어는 전혀 작동하지 않습니다. – deceze

+1

나는 포르투갈 출신이다, 여기 6AM이다 ... 나는 잠을 잘 잤다 .... 그러나 내가 중국어와 어쩌면 언어에 적응할 수있게 된 후에 ... :) – Zuul

+1

중국어, 한국어, 일본어 (...) ""를 사용하십시오. –