fork 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{2,}/', ' ', $sentence); //если больше 2 пробелов подряд то оставляем только 1
  23. $sentence = trim($sentence); // убирает пробелы в начале и конце и переходы на след строку.
  24. $sentence = preg_replace('/\s?,\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 = call_user_func('makeFirstLetterBig', $sentence); //делает первую букву заглавной.
  29. }
  30. $result = implode(' ', $sentences);
  31. return $result;
  32. }
  33.  
  34. function makeFirstLetterBig ($string) {
  35. $firstLetter = mb_strtoupper(mb_substr($string, 0, 1)); //Первая буква
  36. $otherLetters = mb_substr($string, 1); //остальная часть строки
  37. $headedString = $firstLetter . $otherLetters; //склеиваем
  38. return $headedString;
  39. }
  40.  
  41. $test = healText($text);
  42. echo $test;
  43.  
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было. Что скажешь про portal 2? Я вот не играл в него еще! Очень длинный кусок текста получился со своими вставками, надо бы его разбить! Всё равно не влазит? Нет проблем, сделаем так что бы наш скрипт эту хуйню тоже исправлял.