2012-02-04 1 views
1

У меня есть эссе, и я пытаюсь сохранить каждое предложение в моей базе данных. Поэтому я взорву текст с . ! ? персонажей. Но когда я это делаю, я теряю эти персонажи. как я могу взорвать строку без потери взрывоопасных символов?save explode character

+2

Попробуйте вместо preg_split. – ngen

+0

Есть ли какая-то причина, по которой вы не могли бы все это сохранить за один раз или иначе разделили бы, скажем, на абзац? (например, 'explode (PHP_EOL, $ essay);') – mrlee

+0

Это будет * soooo * ненадежным (sic!) ........ (<--- 11 предложений) –

ответ

4

Вы можете использовать функцию PHP preg_split с флагом PREG_SPLIT_DELIM_CAPTURE.

Это даст вам массив, содержащий предложения и разделители, но в отдельных элементах массива.

<?php 
$string="Hello World. Test! Example 123? 456!"; 
$parts = preg_split("#([!.?])#", $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

var_dump($parts); 
?> 

... возвратит следующее:

array(9) { [0]=> string(11) "Hello World" [1]=> string(1) "." [2]=> string(5) " Test" [3]=> string(1) "!" [4]=> string(12) " Example 123" [5]=> string(1) "?" [6]=> string(4) " 456" [7]=> string(1) "!" [8]=> string(0) "" } 
1

Просто используйте preg_split с PREG_SPLIT_DELIM_CAPTURE флагом:

$sentences = preg_split(
    '/([\?\.\!)/', 
    $input, 
    -1, 
    PREG_SPLIT_DELIM_CAPTURE 
); 

В результате массив $ предложений будет работает как массив (,. .., ...)

 Смежные вопросы

  • Нет связанных вопросов^_^