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

Статус
В этой теме нельзя размещать новые ответы.

zhito

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

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

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

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

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

Вот и все, элегантно и просто.
 
только вот знаки препинания будут слеплены со словами :)

ТС, ищите все, что связано со словом tokenizer
 
только вот знаки препинания будут слеплены со словами
так модно пройтись заменой и удалить все знаки препинания
 
знаки препинания по ТЗ тоже нужно выделять в отдельный элемент массива

а что мешает пройтись по полученному массиву и если елемент массива знак препинания, удалить его и одновременно добавить в массив знаков препинания?
 
PHP:
<?php
 $string='Да к чему такие: сложности\' то" с регулярками,  человек вообще не поймет че к чему.';

  preg_match_all('/([-,.\'"])/', $string, $arr2);
  
  $s = array(",", ".", "/", "'", "\"", ":", ";", "-", "_", "!");
  $bez_znaka = str_replace($s ,"", $string);
  $arr1 = explode (" ", $bez_znaka);
?>

$arr1 - массив со словами
$arr2 - массив с символами
 
Непонятно зачем зеловеку 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] => ! )
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху