Автор Тема: Сплит строки по знакам препинания  (Прочитано 4768 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kiruxa

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 209
  • +0/-0
  • 0
    • Просмотр профиля
    • http://autoxloo.com
Добрый день

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

чтото типа аналога 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

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Сплит строки по знакам препинания
« Ответ #1 : 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);

Вот приблизительно, еще доработать по вкусу и готово. Например что делать с двойным "!!" и так далие...
« Последнее редактирование: 23 Января 2008, 10:44:44 от for_i_0 »
Не все является тем чем кажется.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Сплит строки по знакам препинания
« Ответ #2 : 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()
explode()
str_replace()
[off]Безработный[/off]

Оффлайн kiruxa

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 209
  • +0/-0
  • 0
    • Просмотр профиля
    • http://autoxloo.com
Сплит строки по знакам препинания
« Ответ #3 : 23 Января 2008, 12:21:19 »
сделал как написал Altaxar  вроде пока работает.... поставил только чтобы проверяло на пустые строки....


я тоже думал "традиционным методом" но это долго. и некрасиво... согласен что надежно... но preg_match_all мне больше нравицо
Не бывает так чтоб никто нигде никак ничем :)
 Изготовление сайтов в Днепропетровске. Раскрутка, поддержка

Оффлайн kiruxa

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 209
  • +0/-0
  • 0
    • Просмотр профиля
    • http://autoxloo.com
Сплит строки по знакам препинания
« Ответ #4 : 23 Января 2008, 12:23:41 »
Altaxar - Спасибо
Не бывает так чтоб никто нигде никак ничем :)
 Изготовление сайтов в Днепропетровске. Раскрутка, поддержка

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Сплит строки по знакам препинания
« Ответ #5 : 23 Января 2008, 16:39:59 »
kiruxa
ну, что же смотри как удобнее.

тема закрыта
[off]Безработный[/off]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28