$fp = fopen($dstName, "w"); fwrite($fp, $string, strlen($string)); fclose($fp); } $subs_file = file_get_contents("export.txt"); $subs = array(); preg_match_all("/.*[\\n\\r]+/iu", $subs_file, $matches); foreach ($matches[0] as $line) { $subtitle = explode("\t", $line); if (!is_numeric($subtitle[1])) { continue; } uncompress('/home/soshial/subs/opensubtitles/' . $subtitle[1] . '.gz', '/home/soshial/subs/opensubtitles2/' . $subtitle[1] . '.srt'); $sub_text = file_get_contents('/home/soshial/subs/opensubtitles2/' . $subtitle[1] . '.srt'); if (detect_encoding($sub_text) == 'windows-1251') { $sub_text = strip_tags_smart(iconv('windows-1251', 'UTF-8//IGNORE', $sub_text)); } // изменяем кодировку на юникод, и вычищаем от тегов $sub_text = preg_replace('/\\s*\\d+\\r\\n\\d\\d:\\d\\d:\\d\\d,\\d+ --> \\d\\d:\\d\\d:\\d\\d,\\d+/i', '', $sub_text, -1, $count); // вырезаем временные метки $sub_text = preg_replace('/\\.{2,}/i', '…', $sub_text, -1, $count); // заменяем многоточия /* склеиваем текст */ $sub_text = preg_replace("/([^!…\\?_][a-z0-9а-яё])(\\s)*\\r\\n(\\s)*([…«\"\\-]{0,1}(\\s)*[a-zа-яё]{1,}[^\\)])/u", '$1 $4', $sub_text, -1, $count); // ориентация на отсутствие препинаний в конце первого параграфа и на строчные в начале второго п., // где перед буквами могут находиться кавычки: «" и дефис // предполагается автоматическое объединение $sub_text = preg_replace("/([^!…\\?_][a-z0-9А-яё,;—–\\-\\»\\)IVX])(\\s)*\\r\\n(\\s)*([«\\(\\[\"\\-–—=…]{0,1}(\\s)*[a-z0-9а-яё\\?\\!…\"]+[^\\)])/u", '$1 $4', $sub_text, -1, $count); // ориентация на отсутствие точки в конце первого параграфа и на строчные в начале второго п., // где перед буквами и цифрами могут находиться кавычки: «", дефис и скобки: ([ // отключены скобки после первого символа второго п. дабы не цеплять пронумерованные списки
/** * strip_tags_smart */ function strip_tags_smart($content) { if (!$this->_set_include_path) { set_include_path(YF_PATH . 'libs/yf_utf8_funcs/' . PATH_SEPARATOR . get_include_path()); } $this->_set_include_path = true; include_once 'strip_tags_smart.php'; return strip_tags_smart($content); }