Например, у меня есть статья, должен быть splitted согласно границе предложения такой как".
", "?
", "!
"и":
".
Но также все знают, ли preg_split
или explode
функция, они оба удаляют разделитель.
Любая справка действительно ценилась бы!
Править:
Я могу только придумать код ниже, он работает отлично все же.
$content=preg_replace('/([\.\?\!\:])/',"\\1[D]",$content);
Спасибо!!! Все. Это - только пять минут для получения 3 ответов! И я должен принести извинения за неспособность видеть руководство PHP тщательно прежде, чем задать вопрос. Прошу прощения.
preg_split
с флагом PREG_SPLIT_DELIM_CAPTURE
Вернет массив совпадений с разделителем = 0
, match = 1
Вы можете установить флаг 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];
}
Обратите внимание на то, чтобы упаковать разделительный разделитель в группу, иначе они не будут быть захваченным.