fork(1) download
  1. <?php
  2. $text = "Хуй свиньи";
  3. $result = 'Указанная строка - палиндром';
  4. $k = 0;
  5. // Перевожу всю строку в нижний регистр;
  6. $lowCase = mb_strtolower($text);
  7. // Конвертирую полученную строку в массив;
  8. $characters = preg_split("//u", $lowCase);
  9. //Прохожусь циклом по каждому элементу массива и удаляю из него пробелы;
  10. foreach ($characters as $number => $character) {
  11. if ($character == " ") {
  12. unset($characters[$number]);
  13. }
  14. }
  15. // "Клею" элементы массива(уже без пробелов) обратно в строку;
  16. $textWithoutSpace = implode("", $characters);
  17. // Считаю длинну всей строки;
  18. $length = mb_strlen($textWithoutSpace);
  19. echo "Общее количество символов в вводной строке: $length\n";
  20. // Считаю половину длинны с округлением в меньшую сторону;
  21. $halfLength = floor($length / 2);
  22. //Прохожу циклом половину строки( с начала и с конца);
  23. for ($i = 0,$n=-1; $i <= $halfLength; $i++,$n--) {
  24. //Параметр для функции mb_substr, определяющий элемент с конца строки;
  25. $podstroka1 = mb_substr($textWithoutSpace, $i, 1); //Беру 1-й символ с начала;
  26. $podstroka2 = mb_substr($textWithoutSpace, $n, 1);//Беру 1-й символ с конца;
  27. $j=$i+1; // Счетчик номера символа с начала строки для вывода на экран ( чтобы нумерация шла не с нуля, но с единицы);
  28. $f=abs($n); // Аналогично для счетчика с конца строки, дабы значение не было отрицательным;
  29. //Если симметричо расположенные символы одинаковые - вывожу соответствующее сообщение;
  30. if ($podstroka1 == $podstroka2) {
  31. echo "$j символ с начала строки: [$podstroka1] совпал с симметричным ему $f символом [$podstroka2] c конца строки \n";
  32. } else {
  33. echo "$j-й символ с начала строки: [$podstroka1] не совпал с симметричным ему $f-ым символом с конца: [$podstroka2] \n";
  34. $k++; // Иначе же вывожу сообщение и увеличиваю счетчик $k на единицу;
  35. }
  36. }
  37. //Условием палиндрома является совпадение всех равноудаленных символов с обоих концов строки, если хотя бы раз это условие не выполнится - счетчик $k будет отличаться от нуля, а строка - не будет являться палиндромом;
  38. if ($k == 0) {
  39. echo "$result\n";
  40. } else {
  41. echo "$text не является палиндромом\n";
  42. }//Мимо анон-даун, который не может в логику и алгоритмы. Покритикуйте, что ли.
  43. ?>
Runtime error #stdin #stdout #stderr 0.01s 82880KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
PHP Fatal error:  Uncaught Error: Call to undefined function mb_internal_encoding() in /home/bXkbFJ/prog.php:3
Stack trace:
#0 {main}
  thrown in /home/bXkbFJ/prog.php on line 3