@Sandro_s

Как решить эту задачу с обработкой форм в php?

Представляю себе только отдельные части, но все вместе это не работает.

Создайте форму с method=”post”.
1 В форме должны быть текстовая область (textarea) и кнопка.
2 В обработчике необходимо принять строку из текстовой области.
3 Создайте массив, где каждый элемент будет содержать 1 символ из переданной строки.
4 Удалите каждый чётный элемент (то есть 0, 2, 4 и так далее).
5 Соедините все элементы получившегося массива в одну строку и выведите её.
Примечание: Должно получиться что-то наподобие этого: пришла строка «Моя строка», а выйти в браузер должно: «о тоа».

В итоге -ничего не выводит. И что-то здесь ещё с кодировкой при вводе на русском. хотя пытаюсь использовать <mb_strlen($text,'utf-8') на английском- без ромбов.

<form method="post" action=""> 
    <textarea name='text'></textarea>
    <input type='submit' name="Enter">
</form>

<?php
   $text = false;
    if(isset($_POST['submit'])) {
        $text = htmlspecialchars($_POST['text']);
      
		  for($i = 0; $i <strlen($text); $i++){

        $arr[] = $i;
        }
        echo $arr;
    


 
/*<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    <textarea name="text" value="<?=$text?>"></textarea>
    <input type="submit" name="submit" value="Отправить" />
</form>*/




//4. Создайте массив, где каждый элемент будет содержать 1 символ из переданной строки.Если каждой строки textarea то так может.


     if(isset($_POST['Enter'])){
        $text = preg_split("~\n~",trim($_POST['text']));
            print_r(
                        array_combine(array_keys($text),array_values(preg_replace("~.{1}\\K.+~","",$text)))
                );
    }

//п.5 Удалите каждый чётный элемент (то есть 0, 2, 4 и так далее)
$text ='abcd'; //переданный текст
         for($i=0;$i<mb_strlen($text,'utf-8');$i++){
		
            if($i%2==0){
                $text{$i} = '';
            }
        }
 
    //echo $text;
	echo mb_strlen($text, 'utf-8');
  • Вопрос задан
  • 400 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$t = false;
$text = implode('', array_filter(preg_split('//u', $_POST['text']), function($l) use(&$t) { return ($t = !$t); }));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы