Сделал свою функцию, можно ли сделать попроще? PHP: $str = 'палиндромом'; $str2 = 'madam'; $str3 = 'level'; $str4 = 'камаз'; $str5 = 'ороро'; $str6 = 'opopo'; function myStrrev($stroka) { $check = ''; for($i = 0; $i < strlen($stroka); $i++) { $check = $check . mb_substr($stroka, -$i, 1); if(strlen($stroka) === strlen($check)) { return mb_substr($check, 1) . mb_substr($check, 0, 1); } } } echo myStrrev($str) . '<br>'; echo myStrrev($str2) . '<br>'; echo myStrrev($str3) . '<br>'; echo myStrrev($str4) . '<br>'; echo myStrrev($str5) . '<br>'; echo myStrrev($str6) . '<br>'; Результат моморднилап madam level замак ороро opopo Есть вопрос, я сделал вот так mb_substr($check, 1) . mb_substr($check, 0, 1) потому что при обычном возврате, почему-то не записывается последний символ, в английской строке. Почему? Вот так записываться не будет PHP: function myStrrev($stroka) { $check = ''; for($i = 1; $i < strlen($stroka); $i++) { $check = $check . mb_substr($stroka, -$i, 1); if(strlen($stroka) === strlen($check)) { return $check; } } return $check; } Результат будет таким моморднилап mada leve замак ороро opop
PHP: $str = 'Можно ли сделать попроще?'; echo implode('', array_reverse(preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY)));
Я придумал способ по проще PHP: $str = 'палиндромом'; $str2 = 'madam'; $str3 = 'level'; $str4 = 'камаз'; $str5 = 'ороро'; $str6 = 'opopo'; function myStrrev($stroka) { $check = ''; $i = 1; while(strlen($stroka) != strlen($check)) { $check = $check . mb_substr($stroka, -$i, 1); $i++; } return $check; } echo myStrrev($str) . '<br>'; echo myStrrev($str2) . '<br>'; echo myStrrev($str3) . '<br>'; echo myStrrev($str4) . '<br>'; echo myStrrev($str5) . '<br>'; echo myStrrev($str6) . '<br>';
Пиши тогда сразу на ассемблере, по сравнению с ним php потребляет много ресурсов и просто берет за щеку.