我资助了几个帖子将数据作为数组进行爆炸,但我的数据有点特定,因为数据有两部分
我有这个
title=Title1|link=Link1
title=Title2|link=Link2
我需要的结果就是这个
Array
(
[0] => Array
(
[title] => Title1
[link] => Link1
)
[1] => Array
(
[title] => Title2
[link] => Link2
)
)
数据来自texarea,由\ n分隔,因此您看到的数据是实际数据
谢谢你!答案 0 :(得分:6)
preg_match_all('~^title=(.+)\|link=(.+)$~m', $text, $reg, PREG_SET_ORDER);
print_r($reg)
生成
Array
(
[0] => Array
(
[0] => title=Title1|link=Link1
[1] => Title1
[2] => Link1
)
[1] => Array
(
[0] => title=Title2|link=Link2
[1] => Title2
[2] => Link2
)
)
我确定您可以轻松修改它以符合您所需的架构。
答案 1 :(得分:2)
当你实际上不需要正则表达式时,我更喜欢explode()
而不是preg_match()
。
<?php
$text="title=Title1|link=Link1\ntitle=Title2|link=Link2";
$result=array();
$count=0;
// line by line...
foreach (explode("\n", $text) as $line) {
// variable by variable...
foreach (explode("|", $line) as $vars) {
// separate LHS from RHS.
$parts=explode("=", $vars);
$result[$count][$parts[0]]=$parts[1];
}
$count++;
}
print_r($result);
?>
不要忘记添加代码来处理与您期望的模式不匹配的行。输入验证很重要。
答案 2 :(得分:1)
也许这样的事情,它有点冗长,但你应该能够用它作为更优雅的基础。
<?
$result=array();
foreach ($line in $iterable_variable_with_one_line_per_iteration){
$subresult=array();
foreach ($kv_pair in explode($line,"|")){
$kv_pair_2 = explode($kv_pair,"=");
$subresult[kv_pair_2[0]]=$kv_pair_2[1];
}
array_push($result,$subresult);
}
?>