将字符串分解为数组(PHP)

时间:2019-07-12 00:52:05

标签: php arrays string array-explode

我想以这种方式爆炸字符串

给定字符串值 $string = "Hello World Hey;

如果想要输出字符串["Hello","World","Hey"]的数组,则

explode函数将是立即调用

但这是我想要实现的输出["Hello","World","Hey","Hello World","World Hey"]

有什么办法解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

如果您的目标是获取各个部分以及当前单词和下一个单词的重叠匹配,则另一种解决方案是使用表达式。

您可以使用正向超前捕获来捕获组中的重叠匹配项,还可以通过将非白字字符匹配1次以上并使用分支重置组(?|

来捕获单个“单词”
$string = "Hello World Hey";
$res = preg_match_all("/(?|(?:^|\h)(?=(\S+ \S+))|(\S+))/", $string, $matches);
print_r($matches[1]);

结果

Array
(
    [0] => Hello World
    [1] => Hello
    [2] => World Hey
    [3] => World
    [4] => Hey
)

Pattern demo | Php demo

如果您希望使用当前词和后两个词,则可以使用组和量词{2}

Php demo

答案 1 :(得分:1)

<?php

$str = "Hello World Hey";
$arr = explode(" ", $str);
$res_arr = $arr;

for($i = 0; $i < count($arr); $i++)
{
    if($i > 0)
    {
        $res_arr[] = $arr[$i - 1]." ".$arr[$i];
    }
}

print_r($res_arr);

结果:

Array
(
    [0] => Hello
    [1] => World
    [2] => Hey
    [3] => Hello World
    [4] => World Hey
)

答案 2 :(得分:0)

function str_arr($str) {

    $arr = explode(' ', $str);

    $len = count($arr);
    for($i=0; $i<$len-1; $i++)
        $arr[] = $arr[$i] . ' ' . $arr[$i+1];

    return $arr;
}

对于上面函数的输入“ Hello World Hey”,返回此数组

["Hello","World","Hey","Hello World","World Hey"]