Forum Webscript.Ru

Программирование => PHP => Тема начата: kiruxa от 21 Января 2008, 13:23:53

Название: Сплит строки по знакам препинания
Отправлено: kiruxa от 21 Января 2008, 13:23:53
Добрый день

есть у меня такая задачка
нужно разсплитовать строку в масив по знакам препинания
при

чтото типа аналога explod\'a

например есть строка -

$STR ="1998 Ferrari F355 Spider!! Giallo Modena
(Yellow) with Black (Nero) Leather
Interior! Only 16,450 Miles. This 1998
F355 Spider is in excellent condition
and comes with ALL service records from
an authorized Ferrari dealership!";
 
Массив разбивания допустим...

 $split_array=(",",".","!","?");

но надо сделать так чтобы знаки препинания остались в конце элемента массива...


спасибо
Название: Сплит строки по знакам препинания
Отправлено: Altaxar от 21 Января 2008, 18:03:19
$STR ="1998 Ferrari F355 Spider!! Giallo Modena
(Yellow) with Black (Nero) Leather
Interior! Only 16,450 Miles. This 1998
F355 Spider is in excellent condition
and comes with ALL service records from
an authorized Ferrari dealership!";

$split_array=array(",","\\.","!\\s","\\?",\'$\');
$reg=\'/.+?(\'.implode(\'|\',$split_array).\')/\';
$STR=str_replace("\\n",\' \',$STR);
preg_match_all($reg,$STR,$mach);
print_r($mach);

Вот приблизительно, еще доработать по вкусу и готово. Например что делать с двойным "!!" и так далие...
Название: Сплит строки по знакам препинания
Отправлено: for_i_0 от 23 Января 2008, 10:56:37
Altaxar
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: nothing to repeat at offset 11 in...

kiruxa
что мешает сделать все традиционным методом, тем что предлагает PHP?

foreach() (http://www.php.net/manual/en/control-structures.foreach.php)
explode() (http://www.php.net/manual/en/function.explode.php)
str_replace() (http://www.php.net/manual/en/function.str-replace.php)
Название: Сплит строки по знакам препинания
Отправлено: kiruxa от 23 Января 2008, 12:21:19
сделал как написал Altaxar  вроде пока работает.... поставил только чтобы проверяло на пустые строки....


я тоже думал "традиционным методом" но это долго. и некрасиво... согласен что надежно... но preg_match_all мне больше нравицо
Название: Сплит строки по знакам препинания
Отправлено: kiruxa от 23 Января 2008, 12:23:41
Altaxar - Спасибо
Название: Сплит строки по знакам препинания
Отправлено: for_i_0 от 23 Января 2008, 16:39:59
kiruxa
ну, что же смотри как удобнее.

тема закрыта