我想每 10 个单词拆分一个字符串。 但如果任何单词包含标点符号,则在标点符号之后拆分并继续每 10 个单词拆分。
我正在使用它,但它只是将字符串每 10 个单词拆分一次。
<?php
$string = 'Lorem ipsum dolor sit amet, te has omnesque gubergren definiebas. Omnesque ullamcorper pri ut. In eos insolens atomorum moderatius, mundi menandri usu cu. Nam an dicant tritani philosophia facete minimum id sed errem omnium persequeris ad his, omnes luptatum recteque mel eu, est te laudem causae.';
$splitted = preg_replace( '~((?:\S*?\s){10})~', "$1\n", $string);
$Words = explode("\n", $splitted);
var_dump($Words);
?>
array(5) {
[0]=>
string(66) "Lorem ipsum dolor sit amet, te has omnesque gubergren definiebas. "
[1]=>
string(72) "Omnesque ullamcorper pri ut. In eos insolens atomorum moderatius, mundi "
[2]=>
string(66) "menandri usu cu. Nam an dicant tritani philosophia facete minimum "
[3]=>
string(64) "id sed errem omnium persequeris ad his, omnes luptatum recteque "
[4]=>
string(29) "mel eu, est te laudem causae."
}
我想得到这些结果,每 10 个单词拆分字符串 但是如果任何单词包含标点符号,在标点符号之后拆分并继续每 10 个单词拆分
array(6) {
[0]=>
string() "Lorem ipsum dolor sit amet, te has omnesque gubergren definiebas. "
[1]=>
string() "Omnesque ullamcorper pri ut."
[2]=>
string() "In eos insolens atomorum moderatius, mundi menandri usu cu."
[3]=>
string() "Nam an dicant tritani philosophia facete minimum id sed errem"
[4]=>
string() "omnium persequeris ad his, omnes luptatum recteque mel eu, est"
[5]=>
string() "te laudem causae."
}
最佳答案
这是你想要的吗?
$string = 'Lorem ipsum dolor sit amet, te has omnesque gubergren definiebas. Omnesque ullamcorper pri ut. In eos insolens atomorum moderatius, mundi menandri usu cu. Nam an dicant tritani philosophia facete minimum id sed errem omnium persequeris ad his, omnes luptatum recteque mel eu, est te laudem causae.';
$splitted = preg_replace( '~((?:[^\s\pP]+[\s\pP]){1,10})~', "$1\n", $string);
$Words = explode("\n", $splitted);
var_dump($Words);
\pP
代表任何标点符号。
输出:
array(10) {
[0]=>
string(27) "Lorem ipsum dolor sit amet,"
[1]=>
string(38) " te has omnesque gubergren definiebas."
[2]=>
string(29) " Omnesque ullamcorper pri ut."
[3]=>
string(37) " In eos insolens atomorum moderatius,"
[4]=>
string(23) " mundi menandri usu cu."
[5]=>
string(63) " Nam an dicant tritani philosophia facete minimum id sed errem "
[6]=>
string(26) "omnium persequeris ad his,"
[7]=>
string(32) " omnes luptatum recteque mel eu,"
[8]=>
string(22) " est te laudem causae."
[9]=>
string(0) ""
}
如果你不想用逗号分隔,使用这个:
$splitted = preg_replace( '~((?:[^\s.:;]+[\s.:;]){1,10})~', "$1\n", $string);
关于php - 每 10 个单词拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32477510/