fork(1) download
  1. <?php
  2. /*Если ты сделал задачу про Grammar Nazi, сделай скрипт, которы вместо сообщения об ошибках будет молча
  3. их исправлять.*/
  4.  
  5. $text = "ЗДЕЛАЛ СДЕСЬ КООРДИНАЛЬНО Привет,Жырный!труд:Шырокий?пассаЖЫР;зделаю Координально но, например СДЕСЬ сдесь решена проблема ушыбов.
  6. ЗДЕЛАНО многое а? ведь эти ушы зделали мы. Один ананас но зато какой";
  7.  
  8. $simpleReplace = ['/(к)оординально/ui' => '$1ардинально', //кардинально
  9. '/([,;!?:])([^,;!?:\\s]+)/u' => '$1 $2', //пробелы после знаков препинания
  10. '/([а-яё]+)\\s+((?:а|но)[^а-яё])/ui' => '$1, $2']; //знаки препинания
  11.  
  12. foreach ($simpleReplace as $pattern => $replacement){
  13. $text = preg_replace($pattern, $replacement, $text);
  14. }
  15.  
  16. $replaces = [
  17. ['pattern' => '/(с)десь/ui',
  18. 'callback' => function($matches){
  19. if (preg_match('/с/u',$matches[1])){
  20. return 'здесь';
  21. } else {
  22. return 'Здесь';
  23. }
  24. }],
  25. ['pattern' => '/(?:(з)дела)((?:ю|л|н)\\s*)/ui',
  26. 'callback' => function ($matches){
  27. if (preg_match('/з/u',$matches[1])){
  28. $result = "сдела{$matches[2]}";
  29. return $result;
  30. } else {
  31. $result = "Сдела{$matches[2]}";
  32. return $result;
  33. }
  34. }],
  35. ['pattern' => '/([а-яё]*(?:ж|ш))(ы)([а-яё]*)/ui',
  36. 'callback' => function ($matches){
  37. if (preg_match('/ы/u',$matches[2])){
  38. $result = "{$matches[1]}и{$matches[3]}";
  39. return $result;
  40. } else {
  41. $result = "{$matches[1]}И{$matches[3]}";
  42. return $result;
  43. }
  44. }]
  45. ];
  46. foreach ($replaces as $replace){
  47. $text = preg_replace_callback($replace['pattern'], $replace['callback'], $text);
  48. }
  49.  
  50. echo $text;
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
СделаЛ Здесь Кардинально Привет, Жирный! труд: Широкий? пассаЖИР; сделаю Кардинально, но, например Здесь здесь решена проблема ушибов.
		СделаНО многое, а? ведь эти уши сделали мы. Один ананас, но зато какой