За последние 24 часа нас посетили 15739 программистов и 1544 робота. Сейчас ищут 822 программиста ...

Заменитель букв. Посимвольное преобразование строки в числовой массив

Тема в разделе "Сделайте за меня", создана пользователем JediSkywalker, 10 июл 2017.

  1. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Написал кот:

    PHP:
    1. <!DOCTYPE html>
    2. <!--
    3. To change this license header, choose License Headers in Project Properties.
    4. To change this template file, choose Tools | Templates
    5. and open the template in the editor.
    6. -->
    7. <html>
    8.     <head>
    9.         <meta charset="UTF-8">
    10.         <title></title>
    11.     </head>
    12.     <body>
    13.         <form method ="post">
    14.             Path to the file: <input type="text" name="path">
    15.             <input type="submit" name="submit">
    16.         </form>
    17.         <?php
    18.         if(isset($_POST['path'])) {
    19.             if (file_exists($_POST['path'])){
    20.              
    21.                 $ru = array('А', 'а', 'В', 'Е', 'е', 'К', 'М', 'Н', 'О', 'о', 'Р', 'р', 'С', 'с', 'Т', 'у', 'Х', 'х');
    22.                 $en = array('1', '2', 'B', 'E', 'e', 'K', 'M', 'H', 'O', 'o', 'P', 'p', 'C', 'c', 'T', 'y', 'X', 'x');
    23.            
    24.                 $filename = $_POST['path'];
    25.                 $file = fopen($filename, 'r+');
    26.                 $read = file_get_contents($filename);
    27.                 $cont = array explode('', $read);
    28.                 $ncont = ''
    29.                                      
    30.                 foreach($cont as $char) {
    31.                     if (in_array($char, $ru) {
    32.                             $total += 1;
    33.                             $ind = array_search($char, $ru);
    34.                             $nchar = $en[$ind];
    35.                             $ncont += $nchar;
    36.              
    37.                     } else {
    38.                         ncont+=$char
    39.                         total+=1      
    40.                     }
    41.                          
    42.                 }
    43.              
    44.                 $size = iconv_strlen($ncont)
    45.              
    46.                 if($size != 0){
    47.                     $part = round($total / $size, 2)
    48.                 } else {
    49.                     echo('The file is empty')
    50.                 }
    51.              
    52.                  
    53.                 echo($total, $size, $part)
    54.                 echo($ncont)
    55.              
    56.                     }
    57.                      
    58.             } else {
    59.                 echo ('The file does not exist')
    60.             }
    61.        
    62.         ?>
    63.     </body>
    64. </html>
    Вот незадача: в строке cont символы идут друг за другом, а не через пробелы/запятые/.... И вот как эту строку преобразовать в числовой массив, чтобы с ним foreach работал? Также, пожалуйста, сообщите о других ошибках, если заметите.
     
    #1 JediSkywalker, 10 июл 2017
    Последнее редактирование модератором: 13 июл 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    нифига ничего не понял
    выведи текст ДО обработки в окошке и во втором как он должен выглядеть.
     
  3. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Всё, я вроде разобрался, сделал вместо foreach for и вспомнил про то, что можно сделать так $string[x]. Теперь всё в порядке, но я не знаю, как проверить работоспособность кота. Ide one сказал, что он работает, но вот запускать его отказался. Вот файл.
     

    Вложения:

  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    сегодня день такой с людьми непонятными. одному наверно раз 7 сказал что надо, нет все равно бред выдает. В итоге послал в пекло.
     
  5. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Или ты тормоз. Написал же: разобрался, теперь может кто-нибудь хороший проверить правильность кода и его работоспособность(я не могу)?
     
  6. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    В коде не хватает ";" во многих инструкциях. Есть переменные без "$". Есть необъявленные функции:
    PHP:
    1. for ($i = 0; i<len(cont); i++) {...
    Подразумевалось: mb_strlen($cont) ?
    Еще для сложения строк использован "+" вместо "."

    Этот код не будет работать.
     
  7. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Большое спасибо. Вроде подправил всё, что увидел, теперь попытка №2. Нечасто на php пишу.
    --- Добавлено ---
    Также поставил $cont в for и убрал скобочки после echo
     

    Вложения:

  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    Тормоз твоя собака. А твой код есть что на деле говнокод. От тебя лишь видеть хотел от и до данные, или пример что приходит и что должно получиться. Но нет... надо лаять...
     
  9. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Вот версия файла прямо новая-новая. Теперь объясните, пожалуйста, почему на выходе то же самое получается, что и вводили. Таки нашёл sandbox, который мне исполняет. То есть ошибка где-то в if, который в for
     

    Вложения:

  10. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Такая запись не гарантирует, что Вы получите символ, а не пол-символа:
    PHP:
    1. $sym = $cont[$i];
    Лучше писать так:
    PHP:
    1. $sym = mb_substr($cont, $i, 1);
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    PHP:
    1. <!DOCTYPE html>
    2. <!--
    3. To change this license header, choose License Headers in Project Properties.
    4. To change this template file, choose Tools | Templates
    5. and open the template in the editor.
    6. -->
    7. <html>
    8.     <head>
    9.         <meta charset="UTF-8">
    10.         <title></title>
    11.     </head>
    12.     <body>
    13.         <form method ="post">
    14.             Path to the file: <input type="text" name="path">
    15.             <input type="submit" name="submit">
    16.         </form>
    17. <?
    18.     if ( isset ( $_POST['path'] ) )
    19.     {
    20.         if ( file_exists ( $_POST['path'] ) )
    21.         {
    22.             $ru = array('А', 'а', 'В', 'Е', 'е', 'К', 'М', 'Н', 'О', 'о', 'Р', 'р', 'С', 'с', 'Т', 'у', 'Х', 'х');
    23.             $en = array('1', '2', 'B', 'E', 'e', 'K', 'M', 'H', 'O', 'o', 'P', 'p', 'C', 'c', 'T', 'y', 'X', 'x');
    24.            
    25.             echo strtr ( array_combine ( $ru, $en ), file_get_contents ( $_POST['path'] ) );
    26.         }
    27.  
    28.     }
    29.     else
    30.     {
    31.         echo 'The file does not exist';
    32.     }
    33. ?>
    34.     </body>
    35. </html>
    пойдет ?
     
    JediSkywalker и Maputo нравится это.
  12. JediSkywalker

    JediSkywalker Новичок

    С нами с:
    10 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Да. Большое спасибо. Но всё-таки кто-нибудь может объяснить, что у меня не так с функцией in_array, она мне для подсчёта total ещё нужна.
    --- Добавлено ---
    Итого, с записью в файл и перестановкой слагаемых. У кого-нибудь есть сервер, кто-нибудь проверит?
    --- Добавлено ---
    Мне стыдно, что я плохо знаю фуккции и пишу быдлокод. Я исправлюсь, но сначала мне будет нужно выбрать любимый езык.
     

    Вложения:

  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень