fork(1) download
  1. <?php
  2.  
  3.  
  4. $text = "ну что. не смотрел еще black mesa. я собирался скачать ,но все как-то некогда было.
  5. что скажешь про portal 2 ? я вот не играл в него еще ! очень длинный кусок текста получился со своими вставками , надо бы его разбить !
  6. Всё равно не влазит? Нет проблем, сделаем так что бы наш скрипт эту хуйню тоже исправлял.";
  7. // Для тестов
  8. //$text = "roses are red,and violets are blue.whatever you do i'll keep it for you.";
  9. //$text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
  10.  
  11.  
  12. function healText($text) {
  13.  
  14. $splitter = '/[\s\wа-яё,\'-]+[.?!]/ui';
  15. $sentences = [];
  16. //бьем на предложения сохраняя в конце знак припинания
  17. $numberOfsentences = preg_match_all($splitter, $text, $sentences);
  18. //массив предложений лежал в 0 элементе исходного, забираем его.
  19. $sentences = $sentences[0];
  20.  
  21. foreach ($sentences as &$sentence) {
  22. $sentence = preg_replace('/\s[\s]+/', ' ', $sentence); //если больше 2 пробелов подряд то оставляем только 1
  23. $sentence = preg_replace('/\n/', '', $sentence); //вырезаем переходы на след строку.
  24. $sentence = preg_replace('/^\s/', '', $sentence); //вырезаем пробелы в начале предложения.
  25. $sentence = preg_replace('/\s?,\s?/', ', ', $sentence); //убираем неправельные пробелы вокруг запятых
  26. $sentence = preg_replace('/\s?[?]\s?/', '?', $sentence); // вокруг вопросов
  27. $sentence = preg_replace('/\s?[!]\s?/', '!', $sentence); // вокруг !
  28. $sentence = preg_replace('/\s?[.]\s?/', '.', $sentence); // вокруг точек
  29. $firstLetter = mb_strtoupper(mb_substr($sentence, 0, 1)); //Первая буква
  30. $otherLetters = mb_substr($sentence, (-1*mb_strlen($sentence)+1)); //остальная часть строки
  31. $sentence = $firstLetter . $otherLetters; //склеиваем
  32. }
  33.  
  34. $result = implode(' ', $sentences);
  35. return $result;
  36. }
  37.  
  38. $test = healText($text);
  39. echo $test;
  40.  
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было. Что скажешь про portal 2? Я вот не играл в него еще! Очень длинный кусок текста получился со своими вставками, надо бы его разбить! Всё равно не влазит? Нет проблем, сделаем так что бы наш скрипт эту хуйню тоже исправлял.