我有例如:
$one = 'aaa bbb ccc sss ddd www';
$two = '### !!!';
$three = '111 222 333 444';
我想在php函数中显示每个字符串最多3个单词:
echo functioncut($one) = aaa bbb ccc
echo functioncut($two) = ### !!!
echo functioncut($three) == 111 222 333
感谢您的帮助!
答案 0 :(得分:6)
使用explode你可以获得一系列单词:
$allwords = explode(' ', $one);
使用array_chunk来获取前三个元素很容易:
$chunks = array_chunk($allwords, 3);
$firstthreewords = $chunks[0];
并且至少使用implode来取回一个字符串:
$string = implode(' ', $firstthreewords);
将它包装成单个函数会给我们:
function functioncut($v){
$allwords = explode(' ', $v);
$chunks = array_chunk($allwords, 3);
return implode(' ', $chunks[0]);
}
或(短而简单,但有点不可读):
function functioncut($v){
return implode(' ',array_shift(array_chunk(explode(' ', $v), 3)));
}
答案 1 :(得分:3)
我不知道有任何PHP函数可以做到这一点..但你可以试试这个:
function wordSplit( $string, $number ) {
return implode( ' ', array_slice( explode( ' ', $string ), 0, $number ) );
}
echo wordSplit( 'aaa bbb ccc sss ddd www', 3 ); // aaa bbb ccc
答案 2 :(得分:1)
使用explode按空格分割字符串,然后只回显数组中的前3个...
$one = 'aaa bbb ccc sss ddd www';
$r1 = explode(' ',$one);
echo $r1[0].' '.$r1[1].' '.$r1[2];
答案 3 :(得分:1)
如果你想使用regexp - 你可以在这个表达式中使用preg_replace():
echo preg_replace( '~^(([\S]*[\s]?){3}).*~', '$1', $one );
答案 4 :(得分:-1)
split()
功能会帮助您了解详细信息,请点击here