fork(3) download
  1. <?php
  2.  
  3.  
  4. $text = "ну что. не смотрел еще black mesa.я собирался скачать ,но все как-то некогда было.";
  5. // Для тестов
  6. // $text = 'roses are red,and violets are blue.whatever you do i'll keep it for you.';
  7. // $text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
  8. $regexpCut = '/[\\.!?\\.\\.\\.]\\s*/ui';
  9. $bigRegexp = array('/([а-яёa-z]?)(\\.|!|\\?|\\.\\.\\.)([а-яёa-z]?)/ui', '/(\\s*)(,)([а-яёa-z]?)/ui', '/\\s\\s*/ui');
  10. $bigReplacement = array('$1$2 $3', '$2 $3', ' ');
  11.  
  12. /* Делает первую букву в строке заглавной */
  13. function makeFirstLetterUppercase($text, $regexpCut, $bigRegexp, $bigReplacement) {
  14. /*Создаёт пустой массив для последующего наполнения готовыми предложениями; обязательно в самом начале функции*/
  15. $rightSentences = array();
  16. /*Разбивает текст на предложения*/
  17. $cutTheText = preg_split($regexpCut, $text);
  18. /*Цикл для разложения массива на ключи и значения*/
  19. foreach ($cutTheText as $keys => $sentence) {
  20. /*Функция для нахождения первых букв в предложениях*/
  21. $findTheFirstLetters = mb_substr($sentence, 0, 1);
  22. /*Функция для перевода первых букв в предложених в верхний регистр*/
  23. $upTheFirstLetters = mb_strtoupper($findTheFirstLetters);
  24. /*Функция для подсчёта всех букв во всех предложениях текста - чтобы получить число, больше которого не может быть букв в предложениях текста*/
  25. $countAllTheLetters = mb_strlen($text, "UTF-8");
  26. /*Функция для обрезания начальных букв в нижнем регистре у всех предложений текста*/
  27. $cutTheLittleFirstLetters = mb_substr($sentence, 1, $countAllTheLetters);
  28. /*Конкатенация увеличенных первых букв в предложениях и обрезанных кусков предложений без первых букв*/
  29. $theRightSentence = $upTheFirstLetters. $cutTheLittleFirstLetters;
  30. /*Заполняет пустой массив получившимися предложениями; далее следует возврат получившегося*/
  31. array_push($rightSentences, $theRightSentence);
  32. }
  33. return $rightSentences;
  34. }
  35.  
  36. /* исправляет текст */
  37. function fixText($text, $regexpCut, $bigRegexp, $bigReplacement) {
  38. /*Вызывает функцию для смены регистра у начальных букв во всех предложениях*/
  39. $rightSentences = makeFirstLetterUppercase($text, $regexpCut, $bigRegexp, $bigReplacement);
  40. /*Склеивает предложения из массива в строку, разделяя их точкой и пробелом*/
  41. $implodeOnlyRightSentences = implode('. ', $rightSentences);
  42. /*Необязательная переменная для удобства слежения за работой кода*/
  43. $cleanRightSentences = $implodeOnlyRightSentences;
  44. /*Замена ошибок в тексте на правильные варианты с последующим возвратом готового варианта*/
  45. $cleanRightSentences = preg_replace($bigRegexp, $bigReplacement, $cleanRightSentences);
  46. return $cleanRightSentences;
  47. }
  48. /*Вызов функции для исправления текста, старт работы скрипта*/
  49. $result = fixText($text, $regexpCut, $bigRegexp, $bigReplacement);
  50. echo "{$result}\n";
  51.  
  52. ?>
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было.