fork download
  1. <?php
  2. function grammarCheck($text){
  3. $regexpA='/(\s\sа\s)|(([а-я0-9]\sа\s))/u';
  4. $text=preg_replace($regexpA,'[, a]',$text);
  5. $regexpNO='/(\s\sно\s)|(([а-я0-9]\sно\s))/u';
  6. $text=preg_replace($regexpNO,'[, но]',$text);
  7. $fixedWords=array();
  8. $words = explode(" ", $text);
  9. foreach (($words) as $someword) {
  10. $regexpSpace='/(,[^\s])|(;[^\s])|(![^\s])|([?][^\s])|([.]{2}[^\s])|([:][^\s])/';
  11. $regexpbiFinder='/(жы)|(шы)/ui';
  12. $regexpSpecWords='/(координально)|(сдесь)|(зделал)|(зделаю)|(зделан)/u';
  13. if (preg_match($regexpSpace, $someword, $match)) {
  14. $someword = str_replace(","," [, ]",$someword);
  15. $someword = str_replace(";"," [; ]",$someword);
  16. $someword = str_replace("!"," [! ]",$someword);
  17. $someword = str_replace("?"," [? ]",$someword);
  18. $someword = str_replace(".."," [.. ]",$someword);
  19. $someword = str_replace(":"," [: ]",$someword);
  20. array_push($fixedWords, $someword);
  21. }
  22. elseif(preg_match($regexpbiFinder, $someword, $match)){
  23. $someword = str_replace("жы"," [жи]",$someword);
  24. $someword = str_replace("шы"," [ши]",$someword);
  25. array_push($fixedWords, $someword);
  26. }
  27. elseif(preg_match($regexpSpecWords, $someword, $match)){
  28. $someword = str_replace("координально"," [кардинально]",$someword);
  29. $someword = str_replace("сдесь"," [здесь]",$someword);
  30. $someword = str_replace("зделал"," [сделал]",$someword);
  31. $someword = str_replace("зделаю"," [селаю]",$someword);
  32. $someword = str_replace("зделан"," [сделан]",$someword);
  33. array_push($fixedWords, $someword);
  34. }
  35. else{
  36. array_push($fixedWords, $someword);
  37. }
  38. }
  39. //Склеиваем массив назад
  40. $fixedtext= implode(" ", $fixedWords);
  41. return $fixedtext;
  42. }
  43. // Текст для проверки. Извините, мне действительно не приходит в голову ничего кроме text
  44. // Аккуратно ставим в текст ошибки.
  45. // Текст из ЖЖ Лебедева, так что заранее извиняюсь за маты если они там есть.
  46. $text="Главный секрет психического здоровья - оставаться внутри собственной капсулы комфорта.
  47. По умолчанию сдесь каждому человеку достается ситуация,когда ему хорошо,удобно, комфортно, ладно с собой и своими мыслями.
  48. С годами все идет по пизде, конечно. координально, сдесь, зделал, зделаю, зделан . И особенно этому способствуют другие люди. Каждый что-то хочет, дает советы, доебывается, пытается исправить тебя и пр.
  49. А особенно сложно бывает тем, кто по какой-то причине зделал стал известным. В классе, в компании, в телевизоре, в интернете,
  50. на улице. Количество желающих достучаться до тебя и вольно или невольно разрушить капсулу комфорта возрастает и становится невыносимым.
  51. Единственный способ сохранить рассудок и не лишиться психического здоровья - игнор. Жы шы пишы с буквай и. И зачем я только взял этот текст?Всё-равно..дописывать пришлось.
  52. Игнор - фантастически действительный способ. Игнор бывает самым разнообразным зделаю. Приведу пару примеров из собственного опыта.
  53. Первый уровень игнора - не считать, что все входящие сигналы имеют зделан ко мне какое-либо отношение. Тот факт, что я вижу
  54. или слышу угрозу, оскорбление, ненужные мне слова совершенно не означает, что я готов их пропустить во внутренние покои. Кто-то что-то сказал,
  55. окей, но это не повод для меня инвестировать хотя;бы одну копейку душевных сил для принимания этого шума близко к сердцу. Тест:на:двоеточие.
  56. Второй уровень игнора - физическая координально фильтрация. Тоже крайне действенная мера. Любой известный человек неизбежно
  57. обрастает микроорганизмами, которые без должной гигиены рискуют вырасти в мозговых полипов. У меня есть кроме эпизодических
  58. сумасшедших около десятка постоянных авторов разной степени фундаментального расстройства мышления (обоего пола)!Некоторые из них пишут до 15 писем в сутки.
  59. Разумеется, если бы я даже просто пролистывал эту мутную хуету, я бы довольно быстро обрел расстройство рассудка. Поэтому у
  60. меня выработалось простое правило: как только я получаю десятое письмо от очередного ебаната, я тут же настраиваю фильтр на
  61. стороне сервера, и все дальнейшие письма даже не доходят до меня, растворяясь в пучине сточных вод.
  62. Ко второму уровню так же относится и любая другая блокировка. Бывают пронырливые ебанаты, которые лезут в ФБ, ВК, смс, звонки,
  63. почту и пр. Главное - везде их заблокировать и забанить. Тогда они угасают как спичка в закрытой банке. По крайней мере для меня.
  64. Приведенные выше способы сохранения здорового рассудка пригодятся любому, кто начал вести блог и неизбежно столкнулся с
  65. немотивированным потоком говна и доебываний, а также просто всем обычным людям во всех жизненных ситуациях.
  66. Оберегайте внутренние покои, а тут я написал а и но без запятой. А тут будет проверка на отсутствие запятой перед 'а' а тут но будет проверка на отсутствие запятой перед 'но'";
  67.  
  68. //Вызов функции
  69. echo grammarCheck($text);
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
Главный секрет психического здоровья - оставаться внутри собственной капсулы комфорта.
По умолчанию  [здесь] каждому человеку достается ситуация [, ]когда ему хорошо [, ]удобно [, ] комфортно, ладно с собой и своими мыслями. 
С годами все идет по пизде, конечно.  [кардинально],  [здесь],  [сделал],  [селаю],  [сделан] . И особенно этому способствуют другие люди. Каждый что-то хочет, дает советы, доебывается, пытается исправить тебя и пр.
А особенно сложно бывает тем, кто по какой-то причине  [сделал] стал известным. В классе, в компании, в телевизоре, в интернете, 
на улице. Количество желающих достучаться до тебя и вольно или невольно разрушить капсулу комфорта возрастает и становится невыносимым.
Единственный способ сохранить рассудок и не лишиться психического здоровья - игнор. Жы  [ши] пи [ши] с буквай и. И зачем я только взял этот текст [? ]Всё-равно [.. ]дописывать пришлось.
Игнор - фантастически действительный способ. Игнор бывает самым разнообразным  [селаю]. Приведу пару примеров из собственного опыта.
Первый уровень игнора - не считать, что все входящие сигналы имеют  [сделан] ко мне какое-либо отношение. Тот факт, что я вижу 
или слышу угрозу, оскорбление, ненужные мне слова совершенно не означает, что я готов их пропустить во внутренние покои. Кто-то что-то сказал,
 окей, но это не повод для меня инвестировать хотя [; ]бы одну копейку душевных сил для принимания этого шума близко к сердцу. Тест [: ]на [: ]двоеточие.
Второй уровень игнора - физическая  [кардинально] фильтрация. Тоже крайне действенная мера. Любой известный человек неизбежно 
обрастает микроорганизмами, которые без должной гигиены рискуют вырасти в мозговых полипов. У меня есть кроме эпизодических 
сумасшедших около десятка постоянных авторов разной степени фундаментального расстройства мышления (обоего пола) [! ]Некоторые из них пишут до 15 писем в сутки.
Разумеется, если бы я даже просто пролистывал эту мутную хуету, я бы довольно быстро обрел расстройство рассудка. Поэтому у 
меня выработалось простое правило: как только я получаю десятое письмо от очередного ебаната, я тут же настраиваю фильтр на 
стороне сервера, и все дальнейшие письма даже не доходят до меня, растворяясь в пучине сточных вод.
Ко второму уровню так же относится и любая другая блокировка. Бывают пронырливые ебанаты, которые лезут в ФБ, ВК, смс, звонки, 
почту и пр. Главное - везде их заблокировать и забанить. Тогда они угасают как спичка в закрытой банке. По крайней мере для меня.
Приведенные выше способы сохранения здорового рассудка пригодятся любому, кто начал вести блог и неизбежно столкнулся с 
немотивированным потоком говна и доебываний, а также просто всем обычным людям во всех жизненных ситуациях.
Оберегайте внутренние покои, а тут я написа[, a][, но]без запятой. А тут будет проверка на отсутствие запятой перед 'а' а ту[, но]будет проверка на отсутствие запятой перед 'но'