fork download
  1. <?php
  2.  
  3.  
  4. function correctingOfPunctuationMarks($text) {
  5. $marks = [".", ",", "!", "?", ":", ";"];
  6. foreach($marks as $mark){
  7. $reg = "/(\s|\s+)?[{$mark}](\s|\s+)?/u"; // вот тут чота не так
  8. $text = preg_replace($reg, $mark . " ", $text);
  9. // $text = preg_replace("\. \. \.", "...", $text);
  10. }
  11. return $text;
  12. }
  13.  
  14. /* Делает первую букву в строке заглавной */
  15. function makeFirstLetterUppercase($text) {
  16. $text = trim($text);
  17. $letter = mb_strtoupper(preg_split("//u", $text, -1, PREG_SPLIT_NO_EMPTY)[0]);
  18.  
  19. $text = $letter . mb_substr($text, 1, mb_strlen($text)-1);
  20. return $text;
  21. }
  22.  
  23. /* исправляет текст */
  24. function fixText($text) {
  25. $reg = "/(?<=[.!?])/u";
  26. $r_text = preg_split($reg, $text);
  27. $res = "";
  28. foreach($r_text as $sentence) {
  29. $res .= makeFirstLetterUppercase($sentence);
  30. }
  31. $res = trim(correctingOfPunctuationMarks($res));
  32. return $res;
  33.  
  34. }
  35.  
  36.  
  37.  
  38. $texts = ["привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.",
  39. "roses are red,and violets are blue.whatever you do i'll keep it for you.",
  40. "ну что . не смотрел еще black mesa.я собирался скачать ,но все как-то некогда было.",
  41. "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!"
  42. ];
  43. $textWithoutMistakes = [
  44. "Привет. Есть 2 функции, preg_split и explode, не понимаю, в чем между ними разница.",
  45. "Roses are red, and violets are blue. Whatever you do i'll keep it for you.",
  46. "Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было.",
  47. "Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!"
  48. ];
  49.  
  50. $result = "";
  51. for($i=0; $i<4; $i++) {
  52. $r = fixText($texts[$i]);
  53. $res = strcmp($textWithoutMistakes[$i], $r) == 0 ? "True" : "False";
  54.  
  55.  
  56. $result .= "{$r} - {$res}\n\n";
  57. }
  58. echo $result;
Success #stdin #stdout #stderr 0.02s 24816KB
stdin
Standard input is empty
stdout
Привет. Есть 2 функции, preg_split и explode, не понимаю, в чем между ними разница. - True

Roses are red, and violets are blue. Whatever you do i'll keep it for you. - True

Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было. - True

Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою. . . В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры! - False

stderr
PHP Notice:  Undefined offset: 0 in /home/r2YSTO/prog.php on line 19
PHP Notice:  Undefined offset: 0 in /home/r2YSTO/prog.php on line 19
PHP Notice:  Undefined offset: 0 in /home/r2YSTO/prog.php on line 19
PHP Notice:  Undefined offset: 0 in /home/r2YSTO/prog.php on line 19