fork(1) download
  1. <?php
  2. $matches = array();
  3. $string = 'Это сдесь координально морж зделал из чящи жырную?!шляпу,а кот сидел?!';
  4. $matchPattern = '/(сдесь|координально|здела[люн]|[жш]ы|[чщ]я|[,!?;:]+[\w]|[,](а|но)[\\W])/ui';
  5. $replacements = array('/сдесь/ui' => 'здесь',
  6. '/координально/ui' => 'кардинально',
  7. '/здела([люн])/ui' => 'cдела$1',
  8. '/([жш])ы/ui' => '${1}и',
  9. '/([чщ])я/ui' => '${1}а',
  10. '/([,!?;:]+)([\w])/ui' => '$1 $2',
  11. '/[,](а|но)([\\W])/ui' => ', $1$2');
  12.  
  13.  
  14. echo "Текст: '$string'\n";
  15.  
  16. if (preg_match_all($matchPattern, $string, $matches, PREG_SET_ORDER)) {
  17. foreach ($matches as $match) {
  18. echo "\nОшибка в фрагменте: '{$match[1]}'.";
  19. }
  20.  
  21. echo "\n\nИсправленный текст: '".preg_replace(array_keys($replacements), array_values($replacements), $string)."'";
  22. } else {
  23. echo "Всё правильно.";
  24. }
  25. ?>
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Текст: 'Это сдесь координально морж зделал из чящи жырную?!шляпу,а кот сидел?!'

Ошибка в фрагменте: 'сдесь'.
Ошибка в фрагменте: 'координально'.
Ошибка в фрагменте: 'зделал'.
Ошибка в фрагменте: 'чя'.
Ошибка в фрагменте: 'жы'.
Ошибка в фрагменте: '?!ш'.
Ошибка в фрагменте: ',а'.

Исправленный текст: 'Это здесь кардинально морж cделал из чащи жирную?! шляпу, а кот сидел?!'