Как разбить TEXTAREA данные на строки EXPLODE ?

Discussion in 'PHP' started by Adio, 12 Feb 2013.

  1. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Привет
    Что то не могу понять, нужно обработать данные из TEXTAREA
    Т.е новую строку как то разбить

    в TEXTAREA ввожу

    Hello this is test 1
    Hello this is test 1
    Hello this is test 1
    Hello this is test 1

    Как их рабить explode ?

    Делаю так


    $test1=explode("\r\n", $_POST['data_test']);
    print_r($test1);

    вообщем не знаю как рабить, помогите,
     
  2. ourcode

    ourcode New Member

    Joined:
    2 Feb 2013
    Messages:
    21
    Likes Received:
    4
    Reputations:
    5
    Используй другой символ в качестве разделителя.
    А именно linefeed он же \n.

    Code:
    <?php
    $test = $_POST['test'];
    $arr = explode( "\n", $test);
    print_r($arr); ?> 
    
    <html>
    <body>
    <form method='POST'>
    <textarea name='test' rows='10' cols='30' >
    </textarea>
    <input type='submit' value='submit' />
    </form>
    </body>
    </html>
    
     
  3. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Спасибо !

    Оказуеться что то в моем коде не так... буду разбираться что именно - почему не рабиваеться - :) а твой работает
     
  4. DJ4J

    DJ4J Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    53
    Reputations:
    1
    Только в виду имей, на будущее
    \n - маркер конца строки *nix
    \r\n - маркер конца строки windows.Ну и DOS, кажется, но это уже не важно.
     
  5. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Вопрос !
    Чет я запутался

    Вообщем я рабиваю строку, как выше.
    Потом подсчитывают кол строк в массиве
    Потом в цикле FOR обрабатывают.
    Но не пойму как их обратно соединить все вместе ?


    Т.е мне нужно так, обработать строки, убрать те которые привышают к примеру 20 символов, и обратно запихнуть их в ту же переменную, и потом записать в файл.


    Т.е что бы не делать записить прям в цикле, к примеру я хидере сделаю обработчик которые будет фильтровать, а потом соединять все обратно но уже отфильтрованно и отсылать на запись.
     
  6. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    PHP:
    $s=$s.$massiv[i]."\r\n";
    - в цикле, элементы массива $massiv окажутся в строковой переменной $s вместе с разделителями строк, соединять можно в том же цикле, где делаешь проверку по длинне. (накапливать результат в переменную $s)
     
    1 person likes this.
  7. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18


    Пасибо, но чет тут не ладное, вне массива вывожу

    echo $s

    Показывает отфлитрованный текст, но только 1 символы, к примеру остаються строки

    hellooo
    day

    то echo $s выводит вот это

    h
    d
     
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Строковый массив по умолчанию он двумерный, т.е. можно обратиться к букве если элемент слово. У тебя вообще какой массив? Простой (индексы числа) или ассоциативный (индексы строки)? Выложи код.

    Если юзаешь массив $_POST то это ассоциативный массив изначально, сделай разбор той строки сначала в обычный простой массив с числовыми индексами.
     
    #8 -=lebed=-, 12 Feb 2013
    Last edited: 12 Feb 2013
  9. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18


    PHP:
    <?php 

    $data 
    $_POST['data'];  
    $arr explode"\n"$data); 

    $total=count($arr); 

    for (
    $i=0;$i<$total;$i++) {  

    $names=trim($arr[$i]); 
    $count_names=strlen($names);
      
    if(
    $count_names 20) {
     unset(
    $names); 
    }   

    }   
     
    ?>
     
  10. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594

    PHP:
    <?php 
    $s
    ="";
    $data $_POST['data'];  
    $arr explode"\n"$data); 
    $total=count($arr); 
    for (
    $i=0;$i<$total;$i++)
    {  
    $names=trim($arr[$i]); 
    if(
    strlen($names) <= 20$s=$s.$names."\n";
    }
    echo 
    $s;   
    ?>
    - попробуй так, зачем вообще unset юзать?
     
    #10 -=lebed=-, 12 Feb 2013
    Last edited: 12 Feb 2013
  11. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    А ты прям в условии указал подсчет, да, так работает ! :)
    Видно что мыслиш логически по другому ) -
    А что посоветуеш на счет одинаковый действий ?
    Просто щас такой период, приходиться работать иногда с кодом - правда древними методами, в том плане что переписывать одни и те же действией по 100 раз меняя название переменных )
    В какой области ПХП можно создать типа что то шаблона ? в том плане, что если действие все время повторяються - что бы их не переписывать или еще как ? к примеру два скрипрты выполняют одно и то же действие - но что бы они не сливались - нужно переименовывать переменные - вообщем нужно что то типа - создал - и применяеш это в скриптах что бы не писать без конца это все дело.. просто с таким еще не сталкивался
     
  12. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Функции, локальные глобальные переменные, видимость переменных, классы - в эту сторону копай. Мне хватало обычно функций (все используемые переменные видны внутри функции). С классами не работал, хотя с ними можно сделать код ещё компактнее и гибче.
    P.S. http://www.php.su/learnphp/phpoo/?classes
    P.P.S. Подсчёт указан не в условии, а если условие выполняется производится добавление строки, если нет - не добавляется/пропускается.
     
    #12 -=lebed=-, 12 Feb 2013
    Last edited: 12 Feb 2013
  13. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Ооо спасибо, я просто за то что бы сделать 1 раз - и не повторять одно и тоже без конца, нужно примеры поискать на эту тему, что бы более понять как это работает и потом уже разрабатывать под себя - функции которые чаще всего применяються.
     
  14. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Хочешь использовать одинаковые имена переменных? Можно весь код скрипта оформить как функцию как без входящих параметров так и без выходных и/или с ними.
     
  15. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Можно примеры какие нибудь ?
    Я добиваюсь работы простоты - и интеграции в будущем, т.е разработал какой то шаблон действий и применяеш его где нужно - вообщем что бы время много не терять. Хочу заняться серьезно этим делом
     
  16. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Лучше почитай http://www.php.su/functions/custom/?1#feat
    там и найдёшь примеры. Кроме того ведь можно инклудить куски нужного кода. Мало будет функций (подпрограмм) изучишь классы.
    PHP:
    <?php
    function funct($data
    {  
    $s=""
    $arr explode"\n"$data);  
    $total=count($arr);  
    for (
    $i=0;$i<$total;$i++) 
    {   
    $names=trim($arr[$i]);  
    if(
    strlen($names) <= 20$s=$s.$names."\n"

    return 
    $s;
    }

    echo  
    funct($_POST['data']); //вызов функции
    ?>
    - вот тебе пример того скрипта через функцию.
     
    #16 -=lebed=-, 12 Feb 2013
    Last edited: 12 Feb 2013
  17. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    :) Та да, нужно браться за голову, а то такие древние методы как мои, отнимают много времени :)
    Будем понимать :)
     
  18. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Угу, это называется ООП (Объектно-ориентированное программирование) все рано или поздно к нему приходят. :)
     
  19. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Да я верю, потому что очень удобно, и работать и упрощает все во много раз + трату времени :) Ладно жук спасибо что помог :) пошел я копаться дальше )
     
  20. DJ4J

    DJ4J Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    53
    Reputations:
    1
    И это грустно.Ненавижу ООП, но приходится иногда :(