Написал кот: PHP: <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method ="post"> Path to the file: <input type="text" name="path"> <input type="submit" name="submit"> </form> <?php if(isset($_POST['path'])) { if (file_exists($_POST['path'])){ $ru = array('А', 'а', 'В', 'Е', 'е', 'К', 'М', 'Н', 'О', 'о', 'Р', 'р', 'С', 'с', 'Т', 'у', 'Х', 'х'); $en = array('1', '2', 'B', 'E', 'e', 'K', 'M', 'H', 'O', 'o', 'P', 'p', 'C', 'c', 'T', 'y', 'X', 'x'); $filename = $_POST['path']; $file = fopen($filename, 'r+'); $read = file_get_contents($filename); $cont = array explode('', $read); $ncont = '' foreach($cont as $char) { if (in_array($char, $ru) { $total += 1; $ind = array_search($char, $ru); $nchar = $en[$ind]; $ncont += $nchar; } else { ncont+=$char total+=1 } } $size = iconv_strlen($ncont) if($size != 0){ $part = round($total / $size, 2) } else { echo('The file is empty') } echo($total, $size, $part) echo($ncont) } } else { echo ('The file does not exist') } ?> </body> </html> Вот незадача: в строке cont символы идут друг за другом, а не через пробелы/запятые/.... И вот как эту строку преобразовать в числовой массив, чтобы с ним foreach работал? Также, пожалуйста, сообщите о других ошибках, если заметите.
Всё, я вроде разобрался, сделал вместо foreach for и вспомнил про то, что можно сделать так $string[x]. Теперь всё в порядке, но я не знаю, как проверить работоспособность кота. Ide one сказал, что он работает, но вот запускать его отказался. Вот файл.
сегодня день такой с людьми непонятными. одному наверно раз 7 сказал что надо, нет все равно бред выдает. В итоге послал в пекло.
Или ты тормоз. Написал же: разобрался, теперь может кто-нибудь хороший проверить правильность кода и его работоспособность(я не могу)?
В коде не хватает ";" во многих инструкциях. Есть переменные без "$". Есть необъявленные функции: PHP: for ($i = 0; i<len(cont); i++) {... Подразумевалось: mb_strlen($cont) ? Еще для сложения строк использован "+" вместо "." Этот код не будет работать.
Большое спасибо. Вроде подправил всё, что увидел, теперь попытка №2. Нечасто на php пишу. --- Добавлено --- Также поставил $cont в for и убрал скобочки после echo
Тормоз твоя собака. А твой код есть что на деле говнокод. От тебя лишь видеть хотел от и до данные, или пример что приходит и что должно получиться. Но нет... надо лаять...
Вот версия файла прямо новая-новая. Теперь объясните, пожалуйста, почему на выходе то же самое получается, что и вводили. Таки нашёл sandbox, который мне исполняет. То есть ошибка где-то в if, который в for
Такая запись не гарантирует, что Вы получите символ, а не пол-символа: PHP: $sym = $cont[$i]; Лучше писать так: PHP: $sym = mb_substr($cont, $i, 1);
PHP: <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method ="post"> Path to the file: <input type="text" name="path"> <input type="submit" name="submit"> </form> <? if ( isset ( $_POST['path'] ) ) { if ( file_exists ( $_POST['path'] ) ) { $ru = array('А', 'а', 'В', 'Е', 'е', 'К', 'М', 'Н', 'О', 'о', 'Р', 'р', 'С', 'с', 'Т', 'у', 'Х', 'х'); $en = array('1', '2', 'B', 'E', 'e', 'K', 'M', 'H', 'O', 'o', 'P', 'p', 'C', 'c', 'T', 'y', 'X', 'x'); echo strtr ( array_combine ( $ru, $en ), file_get_contents ( $_POST['path'] ) ); } } else { echo 'The file does not exist'; } ?> </body> </html> пойдет ?
Да. Большое спасибо. Но всё-таки кто-нибудь может объяснить, что у меня не так с функцией in_array, она мне для подсчёта total ещё нужна. --- Добавлено --- Итого, с записью в файл и перестановкой слагаемых. У кого-нибудь есть сервер, кто-нибудь проверит? --- Добавлено --- Мне стыдно, что я плохо знаю фуккции и пишу быдлокод. Я исправлюсь, но сначала мне будет нужно выбрать любимый езык.