我一直在努力创建一个能够一个字符串的函数 并用它做到这一点 - 如果提交的字符串是“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) }
不知道为什么会这样,有什么想法吗?
答案 0 :(得分:4)
它不起作用,因为您以复杂的方式执行简单的任务。 请考虑:
function parse_badges($str) {
return (is_string($str))?explode(':',$str):false;
}
说明:
$str
。(is_string)? ... :false;
explode()
将在您选择的字符上拆分字符串并返回包含子字符串的数组。更多阅读: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
)
答案 2 :(得分:0)
function parseBadges($str)
if(strpos($str, ':') !== false)
$badges = explode(':', $str);
return $badges;
}
return false;
}
print_r($badges);