从文本文件中提取段落(> 800个字符)

时间:2016-02-08 01:57:10

标签: php string text

我需要从文本文件中提取相当长的摘录。出于这个原因,我决定提取第一个遇到的段落,长度大于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);
    }
}

0 个答案:

没有答案