как текст загнать в массив?

Тема в разделе "PHP", создана пользователем zhito, 20 май 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zhito

    zhito

    Регистр.:
    23 авг 2007
    Сообщения:
    165
    Симпатии:
    22
    есть ли готовое решение чтобы из текста вышел массив слов и знаков препинания?
     
  2. xtrim

    xtrim Создатель

    Регистр.:
    25 дек 2007
    Сообщения:
    29
    Симпатии:
    5
    Не совсем как тебе надо, но может пригодиться - функция получает массив всех слов из текста:
    <?
    $content = "vasya bil tut";
    preg_match_all("/\S{2,}/i", $content, $words );
    ?>
    В итоге, в массиве $words будет 3 элемента. Цифра 2 в "/\S{2,}/i" - указывает, что нам нужны все слова длинной от 2 символов. Если поставить 6 - будут только слова от 6 символов.
     
  3. Grifindore

    Grifindore

    Регистр.:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    35
    Да к чему такие сложности то с регулярками, человек вообще не поймет че к чему.

    можно просто:

    <?
    $content = "vasya bil tut";
    $content_array = explode (" ", $content);
    ?>

    Ну вывод получится такой:

    $content_array[0] = vasya
    $content_array[1] = bil
    $content_array[2] = tut

    Вот и все, элегантно и просто.
     
  4. ozware

    ozware

    Регистр.:
    22 апр 2007
    Сообщения:
    327
    Симпатии:
    42
    только вот знаки препинания будут слеплены со словами :)

    ТС, ищите все, что связано со словом tokenizer
     
  5. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    так модно пройтись заменой и удалить все знаки препинания
     
  6. ozware

    ozware

    Регистр.:
    22 апр 2007
    Сообщения:
    327
    Симпатии:
    42
    знаки препинания по ТЗ тоже нужно выделять в отдельный элемент массива
     
  7. sasha181

    sasha181 Постоялец

    Регистр.:
    18 апр 2007
    Сообщения:
    100
    Симпатии:
    25
    а что мешает пройтись по полученному массиву и если елемент массива знак препинания, удалить его и одновременно добавить в массив знаков препинания?
     
  8. freelancer_zp

    freelancer_zp Создатель

    Регистр.:
    4 май 2008
    Сообщения:
    12
    Симпатии:
    30
    PHP:
    <?php
     $string
    ='Да к чему такие: сложности\' то" с регулярками,  человек вообще не поймет че к чему.';

      
    preg_match_all('/([-,.\'"])/'$string$arr2);
      
      
    $s = array(","".""/""'""\""":"";""-""_""!");
      
    $bez_znaka str_replace($s ,""$string);
      
    $arr1 explode (" "$bez_znaka);
    ?>
    $arr1 - массив со словами
    $arr2 - массив с символами
     
  9. cobain

    cobain Создатель

    Регистр.:
    12 май 2008
    Сообщения:
    18
    Симпатии:
    2
    Непонятно зачем зеловеку 2 массива.
    Мне кажется требовалась фукция разбиения строки на слова, где знак припинание тоже типа слово.
    Т.е.
    Код:
    $string='Yes, vasya: tut; byl.!';
    preg_match_all('/[-:,.\'\/\\"!]|[\w]+/u',$string,$matches);
    print_r($matches);
    выдаст
    Array ( [0] => Yes [1] => , [2] => vasya [3] => : [4] => tut [5] => byl [6] => . [7] => ! )
     
Статус темы:
Закрыта.