如何在PHP中拆分字符串?

时间:2015-04-17 23:34:32

标签: php string

我一直在努力创建一个能够一个字符串的函数 并用它做到这一点 - 如果提交的字符串是“HelloWorld:GoodbyeWorld”,该函数将创建一个数组,内容将是HelloWorld和GoodbyeWorld,所以 (“HelloWorld”,“GoodbyeWorld”)。这是我的代码。

function parseBadges($str) {
    $realstr=$str;
    $badges = array();
    while(strpos($realstr, ':') !== false) {
        array_push($badges, substr(0, strpos($realstr,':')));
        $realstr = substr(0, strpos($realstr, ':'));
    }
    return badges;
}

尝试var_dump(parseBadges(“FavoerDoer:”));返回

array(1) { [0]=> bool(false) }

不知道为什么会这样,有什么想法吗?

3 个答案:

答案 0 :(得分:4)

它不起作用,因为您以复杂的方式执行简单的任务。 请考虑:

function parse_badges($str) {
    return (is_string($str))?explode(':',$str):false;
}

说明:

  1. 该函数需要一个string => $str
  2. 如果传递的变量不是字符串,则返回false => (is_string)? ... :false;
  3. 如果字符串explode()将在您选择的字符上拆分字符串并返回包含子字符串的数组。
  4. 更多阅读:PHP explode()

    修改

    如果你想避免像word1:word2:那样返回数组3的空结果,那么最后一个单元格将为空。我们只需添加array_filter()

    即可
    function parse_badges($str) {
        return (is_string($str))?array_filter(explode(':',$str)):false;
    }
    

    array_filter默认情况下会删除空单元格。

答案 1 :(得分:1)

$str= "HelloWorld:GoodbyeWorld:HiThere:";

function parseBadges($str) {
    return preg_split('/:/i', $str, null, PREG_SPLIT_NO_EMPTY);
}

print_r(parseBadges($str));

输出:

(
    [0] => HelloWorld
    [1] => GoodbyeWorld
    [2] => HiThere
)

DEMO

答案 2 :(得分:0)

function parseBadges($str)
    if(strpos($str, ':') !== false) 
        $badges = explode(':', $str);
        return $badges;
    }

    return false;
}
print_r($badges);