За последние 24 часа нас посетили 87292 программиста и 4639 роботов. Сейчас ищут 2040 программистов ...

Своя функция, которая переворачивает строку.

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 1 сен 2017.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Сделал свою функцию, можно ли сделать попроще?

    PHP:
    1. $str = 'палиндромом';
    2.     $str2 = 'madam';
    3.     $str3 = 'level';
    4.     $str4 = 'камаз';
    5.     $str5 = 'ороро';
    6.     $str6 = 'opopo';
    7.  
    8.     function myStrrev($stroka) {
    9.         $check = '';
    10.      
    11.         for($i = 0; $i < strlen($stroka); $i++) {
    12.             $check = $check . mb_substr($stroka, -$i, 1);
    13.          
    14.             if(strlen($stroka) === strlen($check)) {
    15.                 return mb_substr($check, 1) . mb_substr($check, 0, 1);
    16.             }
    17.         }
    18.     }
    19.  
    20.     echo myStrrev($str) . '<br>';
    21.     echo myStrrev($str2) . '<br>';
    22.     echo myStrrev($str3) . '<br>';
    23.     echo myStrrev($str4) . '<br>';
    24.     echo myStrrev($str5) . '<br>';
    25.     echo myStrrev($str6) . '<br>';
    Результат

    моморднилап
    madam
    level
    замак
    ороро
    opopo

    Есть вопрос, я сделал вот так mb_substr($check, 1) . mb_substr($check, 0, 1) потому что при обычном возврате, почему-то не записывается последний символ, в английской строке. Почему?

    Вот так записываться не будет

    PHP:
    1. function myStrrev($stroka) {
    2.         $check = '';
    3.      
    4.         for($i = 1; $i < strlen($stroka); $i++) {
    5.             $check = $check . mb_substr($stroka, -$i, 1);
    6.          
    7.             if(strlen($stroka) === strlen($check)) {
    8.                 return $check;
    9.             }
    10.         }
    11.      
    12.         return $check;
    13.     }
    Результат будет таким

    моморднилап
    mada
    leve
    замак
    ороро
    opop
     
    TeslaFeo нравится это.
  2. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    PHP:
    1. $str = 'Можно ли сделать попроще?';
    2. echo implode('', array_reverse(preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY)));
     
    TeslaFeo нравится это.
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    встроенные функции рулят
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Говорят регулярные выражения, отнимают много ресурсов.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    замените strlen на mb_strlen
    --- Добавлено ---
    а если кодировка не utf8 ? ))))
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Я придумал способ по проще

    PHP:
    1.     $str = 'палиндромом';
    2.     $str2 = 'madam';
    3.     $str3 = 'level';
    4.     $str4 = 'камаз';
    5.     $str5 = 'ороро';
    6.     $str6 = 'opopo';
    7.    
    8.    
    9.     function myStrrev($stroka) {
    10.         $check = '';
    11.        
    12.         $i = 1;
    13.         while(strlen($stroka) != strlen($check)) {
    14.             $check = $check . mb_substr($stroka, -$i, 1);
    15.             $i++;
    16.         }
    17.         return $check;
    18.        
    19.     }
    20.  
    21.     echo myStrrev($str) . '<br>';
    22.     echo myStrrev($str2) . '<br>';
    23.     echo myStrrev($str3) . '<br>';
    24.     echo myStrrev($str4) . '<br>';
    25.     echo myStrrev($str5) . '<br>';
    26.     echo myStrrev($str6) . '<br>';
     
  7. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Пиши тогда сразу на ассемблере, по сравнению с ним php потребляет много ресурсов и просто берет за щеку.