2011-10-25 2 views
1

UTF8 인코딩의 페이지에 텍스트 영역이 있습니다.문장 수를 계산하는 방법 <textarea>?

PHP로 문장을 모두 계산하는 방법은 무엇입니까?

업데이트 : 문장은 대문자로 시작하고 점, 질문 또는 느낌표로 끝납니다.

+9

이 어떻게 문장을 정의합니까? – Nobody

+0

글쎄'카운트 (explode ('.', rtrim ($ str, '.')))는 시작하기 좋은 곳 같아요 ... – DaveRandom

+0

업데이트를 확인하십시오. @Nobody –

답변

1

문장을 끝에 점이있는 단어로 처리하면 텍스트의 점을 셀 수 있습니다.

새 줄을 사용하는 경우 \n을 계산하십시오.

3

아무도 이미 말했듯이, 당신이 문장을 정의하는 방법에 달려 있습니다. 그건 ? 그것은 linebreak 이니? 그것은 자본인가? "문장"을 정의하는 것이 정말 어렵다고 생각합니다. 모든 정의에서 그 규칙에 대한 100 가지 예외를 생각할 수 있기 때문입니다.

어쨌든 정의가 생기면 텍스트 영역에있는 항목의 수를 계산할 수 있습니다. 줄 바꿈 수, 점 수 또는 대문자 수와 같은. 또는 모든 것을 하나의 정의로 결합하십시오. 기본적으로 텍스트 영역의 내용을 가져 와서 일부 기능을 처리합니다. :-)

이 질문에 대한 답변을 얻을 수있는 가장 좋은 방법입니다.

편집 편집 한 후 내 대답은 다음과 같습니다

보기의 PHP의 관점에서
function starts_with_upper($str) {  
    $chr = mb_substr ($str, 0, 1, "UTF-8");  
    return mb_strtolower($chr, "UTF-8") != $chr; 
} 

//Get sentences splitted by a dot and starting with a capital letter. 
$total = 0; 
$sentences = explode('.', rtrim($text, '.')); 
for ($i = 0; $i < count($sentences); $i++) { 
    $sentence = $sentences[i]; 
    if (starts_with_upper($sentence)) { 
     $total++; 
    } 
} 

echo "You have " . $total . " sentences ending in a dot. 
3

양식이 제출 될 때 정상으로 $_GET 또는 $_POST을 통해 사용할 수 있도록하는 <textarea>는 단순히 또 다른 <input>입니다 .

문장 자체는 매우 복잡합니다. 문장의 수는 텍스트에서 마침표 (.)의 수로 계산할 수 있지만 약어로는 실패합니다. e.g.. 마침표 뒤에 공백과 대문자가 오는 횟수를 세어 계산할 수 있지만, 일반 명사가 뒤에 오는 약어 및 문장의 시작 부분에 대문자를 사용하지 않는 사람들에게는 실패합니다. 평균 문장 길이 (예 : 70 자)를 결정할 수 있으며 대략 sentences = characters/70입니다. 이러한 솔루션 중 어느 것도 완벽하지 않습니다 (제 생각에는 좋을 수도 있습니다).

UPDATE

: 업데이트 된 질문에 따라, 다음은 도움이 될해야합니다

<?php 
preg_match_all("/(^|[.!?])\s*[A-Z]/",$_POST['textarea'],$matches); 
$count = count($matches); 
+0

(이것은 A-Z 대문자에서만 작동하며 Ä와 같은 문자는 제외합니다.) – Benjie

관련 문제