太空了吗?

时间:2011-09-12 08:40:47

标签: php regex

我有例如:

$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

感谢您的帮助!

5 个答案:

答案 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