文字列の入力を与えられた場合、文字列の終わりを指定の長さに切り捨てることによって、非常に単純な形式の要約を生成する必要があります。文字列から要約を自動的に生成
// 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§MetusSAPIENポルタここ
は、最初のバージョンの機能です§クイーン
それは十分に良いですが、はるかに最適にすることができます。私はそれを確信しています。たとえば、テスト出力は80文字未満です。トリミング後の文字列の最後に空白があり、単語が切り刻まれています。
私が接線を離れて自分自身をロールする前に、コミュニティに聞きたいと思います以前に尋ねられた場合、またはアルゴリズムが既に存在する場合
'str_word_count'がうまく動作します。特に、HTMLエンティティを分割したくありません。 – ajreal
@ajreal abot HTMLエンティティに不安がありません。 str_word_countを使用すると、最も頻繁に表示される単語を表示する方が、要約を表示するより良い方法だと言いますか? – zaf
いいえ、目的は、単語の数を配列を取得する場合は、結合単語の長さの合計がいくつかの長さを超えないように、いくつかの合計を確認するループを行うことができます超えて位置/単語から除外 – ajreal