我正在使用 API 并通过 API 获取结果。我在分割数组的分隔方面遇到问题。以下是我从 API 收到的示例数据:
姓名:jo mamma,地点:佐治亚州亚特兰大,描述:他是一个好人 男孩,而且他很有趣,技能:一点也不多!
我希望能够像这样拆分:
名称:乔妈妈
地点:佐治亚州亚特兰大
描述:他是个好孩子,而且很有趣
技能:一点也不多!
我尝试使用explode函数和正则表达式preg_split。
$exploded = explode(",", $data);
$regex = preg_split("/,\s/", $data);
但没有得到预期的结果,因为它也在男孩之后和乔治亚州之后分裂。结果如下:
姓名:乔妈妈
地点:亚特兰大
格鲁吉亚
描述:他是个好孩子
他很有趣
技能:一点也不多!
只需使用 Zero-Width Positive Lookahead 进行这个简单的分割即可。 (它将仅被
,
分割,之后有类似 name:
的文本)。
$regex = preg_split("/,\s*(?=\w+\:)/", $data);
/*
Array
(
[0] => "name: jo mamma"
[1] => "location: Atlanta, Georgia"
[2] => "description: He is a good boy, and he is pretty funny"
[3] => "skills: not much at all!"
)
*/
从此处了解有关前向和后向的更多信息:http://www.regular-expressions.info/lookaround.html
使用这个正则表达式:
name:\s(.*),\slocation:\s(.*),\sdescription:\s(.*),\sskills:\s(.*)
$text = 'name: jo mamma, location: Atlanta, Georgia, description: He is a good boy, and he is pretty funny, skills: not much at all!';
preg_match_all('/name:\s(.*),\slocation:\s(.*),\sdescription:\s(.*),\sskills:\s(.*)/', $text, $text_matches);
for ($index = 1; $index < count($text_matches); $index++) {
echo $text_matches[$index][0].'<br />';
}
输出:
jo mamma
Atlanta, Georgia
He is a good boy, and he is pretty funny
not much at all!