Там путь состоит в том, чтобы сохранить разделитель, в то время как использование php взрывается или другие подобные функции?

Например, у меня есть статья, должен быть splitted согласно границе предложения такой как".", "?", "!"и":".

Но также все знают, ли preg_split или explode функция, они оба удаляют разделитель.

Любая справка действительно ценилась бы!

Править:

Я могу только придумать код ниже, он работает отлично все же.

$content=preg_replace('/([\.\?\!\:])/',"\\1[D]",$content);

Спасибо!!! Все. Это - только пять минут для получения 3 ответов! И я должен принести извинения за неспособность видеть руководство PHP тщательно прежде, чем задать вопрос. Прошу прощения.

14
задан Gumbo 30 May 2010 в 10:23
поделиться

2 ответа

preg_split с флагом PREG_SPLIT_DELIM_CAPTURE

Вернет массив совпадений с разделителем = 0 , match = 1

9
ответ дан 1 December 2019 в 06:43
поделиться

Вы можете установить флаг PREG_SPLIT_DELIM_CAPTURE при использовании preg_split и также захватить разделители. Затем вы можете взять каждую пару 2‍ n и 2‍ n +1 и собрать их вместе:

$parts = preg_split('/([.?!:])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
$sentences = array();
for ($i=0, $n=count($parts)-1; $i<$n; $i+=2) {
    $sentences[] = $parts[$i].$parts[$i+1];
}
if ($parts[$n] != '') {
    $sentences[] = $parts[$n];
}

Обратите внимание на то, чтобы упаковать разделительный разделитель в группу, иначе они не будут быть захваченным.

15
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: