UTF8 인코딩의 페이지에 텍스트 영역이 있습니다.문장 수를 계산하는 방법 <textarea>?
PHP로 문장을 모두 계산하는 방법은 무엇입니까?
업데이트 : 문장은 대문자로 시작하고 점, 질문 또는 느낌표로 끝납니다.
UTF8 인코딩의 페이지에 텍스트 영역이 있습니다.문장 수를 계산하는 방법 <textarea>?
PHP로 문장을 모두 계산하는 방법은 무엇입니까?
업데이트 : 문장은 대문자로 시작하고 점, 질문 또는 느낌표로 끝납니다.
문장을 끝에 점이있는 단어로 처리하면 텍스트의 점을 셀 수 있습니다.
새 줄을 사용하는 경우 \n
을 계산하십시오.
아무도 이미 말했듯이, 당신이 문장을 정의하는 방법에 달려 있습니다. 그건 ? 그것은 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.
양식이 제출 될 때 정상으로 $_GET
또는 $_POST
을 통해 사용할 수 있도록하는 <textarea>
는 단순히 또 다른 <input>
입니다 .
문장 자체는 매우 복잡합니다. 문장의 수는 텍스트에서 마침표 (.
)의 수로 계산할 수 있지만 약어로는 실패합니다. e.g.
. 마침표 뒤에 공백과 대문자가 오는 횟수를 세어 계산할 수 있지만, 일반 명사가 뒤에 오는 약어 및 문장의 시작 부분에 대문자를 사용하지 않는 사람들에게는 실패합니다. 평균 문장 길이 (예 : 70 자)를 결정할 수 있으며 대략 sentences = characters/70
입니다. 이러한 솔루션 중 어느 것도 완벽하지 않습니다 (제 생각에는 좋을 수도 있습니다).
UPDATE
: 업데이트 된 질문에 따라, 다음은 도움이 될해야합니다<?php
preg_match_all("/(^|[.!?])\s*[A-Z]/",$_POST['textarea'],$matches);
$count = count($matches);
(이것은 A-Z 대문자에서만 작동하며 Ä와 같은 문자는 제외합니다.) – Benjie
이 어떻게 문장을 정의합니까? – Nobody
글쎄'카운트 (explode ('.', rtrim ($ str, '.')))는 시작하기 좋은 곳 같아요 ... – DaveRandom
업데이트를 확인하십시오. @Nobody –