按字符数拆分字符串,不拆分单词


Split a string by number of chars without splitting a word

我想用(例如)50个符号(最小)来分解一个字符串,但不将单词分成两部分。

这可能吗?

使用str_split()会导致最后一个单词被拆分,这是我不想要的。

示例:将字符串拆分为5个符号;

$input = 'This is example, example can be anything.';
$output[0] = 'This';
$output[1] = 'is example,';
$output[2] = 'example';
$output[3] = 'can';
$output[4] = 'be anything';

我不认为有一个内置的函数可以为你做这件事,但你可以做这样的事情:

这里的代码板示例

$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nec elit dui, nec fermentum velit. Nullam congue ipsum ac quam auctor nec massa nunc.";
$output = array();
while (strlen($string) > 50) {
    $index = strpos($string, ' ', 50);
    $output[] = trim(substr($string, 0, $index));
    $string = substr($string, $index);
}
$output[] = trim($string);
var_dump($output);
// array(3) {
//   [0]=>
//   string(50) "Lorem ipsum dolor sit amet, consectetur adipiscing"
//   [1]=>
//   string(55) "elit. Quisque nec elit dui, nec fermentum velit. Nullam"
//   [2]=>
//   string(43) "congue ipsum ac quam auctor nec massa nunc."
// }

只需遍历字符串,在一个数字(数字=5)的字符之后,检查下一个字符是否是空格并拆分。如果没有空间,请不要拆分并转到下一个空间:-)

我想我也理解你,然后你可以使用这个函数:

<?php
    function str_split_len($str, $len)
    {
        if( $len > strlen($str) )
        {
            return false;
        }
        $strlen = strlen($str);
        $result = array();
        $words = ($strlen / $len);
        for( $x = 1; $x <= $len; $x++ )
        {
            $result[] = substr($str, 0, $words);
            $str = substr($str, $words, $strlen); 
        }
        return $result;
    }
    /* Example */
    $res = str_split_len("Split me !haha!", 3);
    print_r($res);
?>