문자열의 입력이 주어진 경우 문자열의 끝을 주어진 길이로 잘라내어 매우 간단한 요약 형식을 생성해야합니다.문자열에서 요약을 자동으로 생성합니다.
// Take an array of strings and generate a summary within a given length
function stringSummaryFromMetadata($inArray,$len=80,$sep='§'){
// Filter out 'false' values
$inputs=array_filter($inArray);
// First try just imploding array
$res=implode($sep,$inputs);
// Check for length
if(mb_strlen($res, 'utf8')>$len){
// Calculate 'z' the fixed width constant
$x=count($inputs);
$z=round(($len-$x)/$x);
// Snip all strings to 'z'
$t1=array();
foreach($inputs as $i) $t1[]=mb_substr($i,0,$z);
// Final answer
$res=implode($sep,$t1);
}
return $res;
}
시험 :
$test=array(
'Ligula diam risus tempus lorem sit',
'Cursus metus commodo enim odio orci',
'Metus sapien porta sapien fusce sodales',
'king queen'
);
$out=stringSummaryFromMetadata($test);
print $out;
준다 :
Ligula DIAM의 risus의 t§Cursus의 metus commod§Metus 사피엔스 간이 여기
는 최초 버전의 함수 퀸 여왕
충분히 좋지만 더 최적 일 수 있습니다. 예를 들어, 테스트 출력은 80 글자보다 작습니다. 트리밍 후 줄 끝의 공백, 단어가 잘린 경우 등입니다.
접하기 전에 나 자신을 굴려서 커뮤니티에 물어보고 싶습니다. 이전에 이것이 요구되었을 경우, 또는 알고리즘이 벌써 존재하고있는 경우.
'str_word_count'가 더 잘 작동합니다. 특히 HTML 엔티티를 깰 필요가 없습니다. – ajreal
@ajreal abot HTML 엔티티가 걱정되지 않습니다. str_word_count를 사용하면 가장 자주 나오는 단어를 보여주는 것이 요약을 보여주는 더 좋은 방법이라고 말하는 것입니까? – zaf
아니요, 목적은 단어 수가 많은 배열을 얻는 것입니다. 조합 단어 길이의 합계가 얼마나되는지 확인하기 위해 루프를 수행하여 초과 할 경우 위치/단어를 제외하십시오. – ajreal