fork(1) download
  1. <?php
  2. function checkGrammar($string) {
  3. $regExp = [
  4. "/[а-яёА-ЯЁ]*(жы|шы)[а-яё]*/ui" => "жи/ши пиши через И",
  5. "/координально/ui" => "правильно писать кардинально",
  6. "/сдесь/ui" => "не \"сдесь\", а \"здесь\"",
  7. "/здела[летюн]{1,2}/ui" => "приставки \"з\" в русском языке нет",
  8. "/[а-яёА-ЯЁ0-9]+\s+а\s+/ui" => "пропущена запятая перед а",
  9. "/[а-яёА-ЯЁ0-9]+\s+но\s+/ui" => "пропущена запятая перед но",
  10. "/[.,!?;:]+[^\s]+/ui" => "пропущен пробел после знака препинания",
  11. ];
  12. $matches = [];
  13. $errorsMessages = [];
  14.  
  15. foreach ($regExp as $pattern => $message) {
  16. if (preg_match_all($pattern, $string, $matches)) {
  17. foreach ($matches[0] as $word) {
  18. $stringPos = mb_strpos($string, $word);
  19. $stringBefore = mb_substr($string, $stringPos - 30, 30);
  20. $stringAfter = mb_substr($string, $stringPos + mb_strlen($word), 30);
  21. $errorsMessages[] = "Допущена ошибка: ...$stringBefore [$word] $stringAfter... ($message)";
  22. }
  23. }
  24. }
  25.  
  26. if (empty($errorsMessages))
  27. return false;
  28.  
  29. return $errorsMessages;
  30. }
  31.  
  32. function fixGrammar($string) {
  33. $regExp = [
  34. "regExp" => [
  35. "/([Жж]|[Шш])ы/ui",
  36. "/координально/ui",
  37. "/сдесь/ui",
  38. "/(здела)([летюн]{1,2})/ui",
  39. "/([а-яёА-ЯЁ0-9]+)\s+(а|но)\s+/ui",
  40. "/([.,!?;:]+)([^\s])/ui"
  41. ],
  42. "replacement" => [
  43. "\$1и",
  44. "кардинально",
  45. "здесь",
  46. "сдела\$2",
  47. "\$1, \$2 ",
  48. "\$1 \$2"
  49. ]
  50. ];
  51. $fixString = preg_replace($regExp["regExp"], $regExp["replacement"], $string);
  52.  
  53. if (!isset($fixString))
  54. return "Ошибок не найдено, нечего исправлять\n";
  55.  
  56. return "Исправленный текст:\n$fixString";
  57. }
  58.  
  59. $text = "Утра, анон. Жывотные Хочу принести тебе прохладную. В общем захотел координально я найти денег, нет, даже не так. Так сдесь как у меня никогда не было девушек, за зделают руку не держался, снимал только шлюх. Я решил зарегаться на мамбе и посмотреть там тянок. В общем ничего толком не вышло из этого, но мне начали писать парни с целью ебли, некоторые предлогали деньги. И вот попался один довольно няшный кун. Вследствие чего я смог заработать 10к деревяных за ночь. Мне было как-то все равно, что с мужиком и понял, что от этого нихуевый профит + этот кун какой-то финансовый директор. В общем списались, после созвонились и я приехал к концу рабочего дня к нему на работу, пили водку, разговаривали, он довольно умный, интересно было с ним болтать, там долго сидели. А скажу сразу, что я еблан и взял деньги только утром, то есть после моей работы, это была ммоя первая ошибка. Так что мы пили, разговаривали о политике, немного о религии, эволюцию, спорт и тому подобное,он еще аниму смотрит иногда и гоняет в старкрафт, через несколько часов мы поебались в каком-то конференц-зале, ничего особенного, ожидал большего, сисурити. Тут вторая была моя ошибка. что не сказал ему одеть гондон, кстати, сосать член довольно легко и не противно, тем более он относительно скорострел, так что после минут 5-7 я был сверху, потом снизу, так же мало чего чувствовал, ни боли, ни удовольствия, так наше соитие с ласками продолжались минут 20.После он засунл, я рядом в обнимку, довольно мило. После я проснулся и сидел за пекой у него и кушал. После он проснулся, я сказал про деньги, он мне их отдал и я пошел домой, он сказал, что вечером созвонимся. Щас мысль идет с него брать деньги + гулять и сидеть в кафе за его счет и тому подобное, ибо он при деньгах и довольно милый. Или же искать еще \"клиентов\". Реквестую ваши стори о похождениях но и спрашиваю советы, что и как дальше а действовать. Пикрандом а так.";
  60.  
  61. if ($errors = checkGrammar($text)) {
  62. foreach ($errors as $error) {
  63. echo "$error\n";
  64. }
  65. } else {
  66. echo "Ошибок не найдено\n";
  67. }
  68.  
  69. echo fixGrammar($text);
Success #stdin #stdout 0.02s 24992KB
stdin
Standard input is empty
stdout
Допущена ошибка: .... Пикрандом а так. [Жывотные]  Хочу принести тебе прохладную... (жи/ши пиши через И)
Допущена ошибка: ...е прохладную. В общем захотел  [координально]  я найти денег, нет, даже не т... (правильно писать кардинально)
Допущена ошибка: ... денег, нет, даже не так. Так  [сдесь]  как у меня никогда не было де... (не "сдесь", а "здесь")
Допущена ошибка: ...я никогда не было девушек, за  [зделают]  руку не держался, снимал толь... (приставки "з" в русском языке нет)
Допущена ошибка: ...и спрашиваю советы, что и как  [дальше а ] действовать. Пикрандом а так.... (пропущена запятая перед а)
Допущена ошибка: ...о и как дальше а действовать.  [Пикрандом а ] так.... (пропущена запятая перед а)
Допущена ошибка: ...нтов". Реквестую ваши стори о  [похождениях но  ] и спрашиваю советы, что и как ... (пропущена запятая перед но)
Допущена ошибка: ...волюцию, спорт и тому подобное [,он]  еще аниму смотрит иногда и го... (пропущен пробел после знака препинания)
Допущена ошибка: ... ласками продолжались минут 20 [.После]  он засунл, я рядом в обнимку,... (пропущен пробел после знака препинания)
Исправленный текст:
Утра, анон. Животные Хочу принести тебе прохладную. В общем захотел кардинально я найти денег, нет, даже не так. Так здесь как у меня никогда не было девушек, за сделают руку не держался, снимал только шлюх. Я решил зарегаться на мамбе и посмотреть там тянок. В общем ничего толком не вышло из этого, но мне начали писать парни с целью ебли, некоторые предлогали деньги. И вот попался один довольно няшный кун. Вследствие чего я смог заработать 10к деревяных за ночь. Мне было как-то все равно, что с мужиком и понял, что от этого нихуевый профит + этот кун какой-то финансовый директор. В общем списались, после созвонились и я приехал к концу рабочего дня к нему на работу, пили водку, разговаривали, он довольно умный, интересно было с ним болтать, там долго сидели. А скажу сразу, что я еблан и взял деньги только утром, то есть после моей работы, это была ммоя первая ошибка. Так что мы пили, разговаривали о политике, немного о религии, эволюцию, спорт и тому подобное, он еще аниму смотрит иногда и гоняет в старкрафт, через несколько часов мы поебались в каком-то конференц-зале, ничего особенного, ожидал большего, сисурити. Тут вторая была моя ошибка. что не сказал ему одеть гондон, кстати, сосать член довольно легко и не противно, тем более он относительно скорострел, так что после минут 5-7 я был сверху, потом снизу, так же мало чего чувствовал, ни боли, ни удовольствия, так наше соитие с ласками продолжались минут 20. После он засунл, я рядом в обнимку, довольно мило. После я проснулся и сидел за пекой у него и кушал. После он проснулся, я сказал про деньги, он мне их отдал и я пошел домой, он сказал, что вечером созвонимся. Щас мысль идет с него брать деньги + гулять и сидеть в кафе за его счет и тому подобное, ибо он при деньгах и довольно милый. Или же искать еще "клиентов". Реквестую ваши стори о похождениях, но и спрашиваю советы, что и как дальше, а действовать. Пикрандом, а так.