fork(2) download
  1. /*Дан неграмотно написанный текст, состоящий из нескольких предложений на русском языке. Ошибки заключаются в
  2. неправильной расстановке пробелов и отсутствии заглавных букв. Исправь текст так, чтобы все предложения в нем начинались
  3. с большой буквы, а после знаков запятая, точка, точка с запятой, двоеточие, восклицательный и вопросительный знак стоял
  4. ровно один пробел (а перед ними — ни одного). Составные знаки вроде многоточия или 2 вопросительных знаков подряд
  5. должны сохраняться.*/
  6. <?php
  7. function upFirstLetter($text){
  8. $text = trim($text);
  9. return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
  10. }
  11. //mb_internal_encoding('utf-8');
  12. $text = <<< EOF
  13. много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в
  14. самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!
  15. EOF;
  16.  
  17. $sentences = preg_split('/(?<=[?!.])/u', $text, -1, PREG_SPLIT_NO_EMPTY);
  18. $fixedString = [];
  19.  
  20. foreach ($sentences as $sentence){
  21. echo $sentence . "\n";
  22. $fixed = upFirstLetter($sentence);
  23. $fixed = preg_replace("/\s+([,:])/", "$1", $fixed);
  24. $fixed = preg_replace("/([,:])\s*/", "$1 ", $fixed);
  25. $fixedString[] = $fixed;
  26. }
  27. $pattern = "/^[.?!]/u";
  28. $result = "";
  29. for($i = 0; $i < count($fixedString); $i++){//Если следующее предложение состоит только из знака препинания, то не ставить пробел
  30. if(preg_match("/^[^.?!]/u", $fixedString[$i]) && preg_match($pattern, $fixedString[$i + 1])
  31. || (preg_match($pattern, $fixedString[$i]) && preg_match($pattern, $fixedString[$i + 1]))){
  32. $result .= $fixedString[$i];
  33. } else{
  34. $result .= $fixedString[$i] . " ";
  35. }
  36. }
  37. echo $result . "\n";
  38.  
  39. ?>
Runtime error #stdin #stdout #stderr 0s 82624KB
stdin
Standard input is empty
stdout
/*Дан неграмотно написанный текст, состоящий из нескольких предложений на русском языке. Ошибки заключаются в
неправильной расстановке пробелов и отсутствии заглавных букв. Исправь текст так, чтобы все предложения в нем начинались
с большой буквы, а после знаков запятая, точка, точка с запятой, двоеточие, восклицательный и вопросительный знак стоял
ровно один пробел (а перед ними — ни одного). Составные знаки вроде многоточия или 2 вопросительных знаков подряд
должны сохраняться.*/
много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою.
stderr
PHP Fatal error:  Uncaught Error: Call to undefined function mb_strtoupper() in /home/qvXFDa/prog.php:9
Stack trace:
#0 /home/qvXFDa/prog.php(23): upFirstLetter('\xD0\xBC\xD0\xBD\xD0\xBE\xD0\xB3\xD0\xBE \xD0\xB8\xD1\x85...')
#1 {main}
  thrown in /home/qvXFDa/prog.php on line 9