我需要从文本文件中提取相当长的摘录。出于这个原因,我决定提取第一个遇到的段落,长度大于800个字符,并将其剪切为800个字符,添加" ..."到底。如果找不到这样的段落 - 则降低到700,600,500。
请帮我改进这个PHP代码。 或者,如果你知道bash解决方案 - 也会很好。提前谢谢。
if ($text != false && $text != '') {
preg_match('#^(.{50,100})(\s+)#s', $text, $aSubject);
preg_match('#([^\n]{400,800})(.*)#', $text, $aAnnotation);
$text = preg_replace('#([\n\r\t\s]+)#s', " ", $text);
// $text = preg_replace('#([\w|\s]+)#s', "\1", $text);
$wordcount = count(explode(" ", $text));
// if (isset($aAnnotation[1]) && isset($aSubject[1])) {
if (isset($aAnnotation[1])) {
$sAnnotation = preg_replace('#(\s{2,100})#', ' ', $aAnnotation[1]);
$stmt = $hDB->prepare("INSERT INTO {$_S['tableText']} (filename, text) values (?, ?)");
$stmt->execute([$aFilename[1], trim($text)]);
// $stmt = $hDB->prepare("INSERT INTO {$_S['tableKeywords']} (filename, subject, annotation) values (?, ?, ?)");
// $stmt->execute([$File, $aSubject[1], $sAnnotation]);
$stmt = $hDB->prepare("INSERT INTO {$_S['tableKeywords']} (filename, annotation, wordcount) values (?, ?, ?)");
$stmt->execute([$aFilename[1], $sAnnotation, $wordcount]);
$aExts[$aFilename[3]] = (isset($aExts[$aFilename[3]])) ? $aExts[$aFilename[3]] + 1 : 1;
// unlink($_S['textDir'] . '/' . $File);
}
}