Php 将包含XML标记的文本文件解析为数组
我需要解析包含如下html标记的文本文件:Php 将包含XML标记的文本文件解析为数组,php,arrays,regex,parsing,Php,Arrays,Regex,Parsing,我需要解析包含如下html标记的文本文件: <item> <value4="L5u9eDNV40_val4"> <value6="xcE90l2HyN_val6"> <value3="hJyVXoE4YQ_val3"> <value5="K68yGpDsTR_val5"> <value2="umrVvR8Tfe_val2"> <value1="y6Ms2E5BHe_val1"> </item&g
<item>
<value4="L5u9eDNV40_val4">
<value6="xcE90l2HyN_val6">
<value3="hJyVXoE4YQ_val3">
<value5="K68yGpDsTR_val5">
<value2="umrVvR8Tfe_val2">
<value1="y6Ms2E5BHe_val1">
</item>
<item>
<value4="T4PFOipm3u_val4">
<value2="upLkW2r8nq_val2">
<value3="3h7lV6CaHP_val3">
<value5="4pETv3bt5c_val5">
<value1="iEPZCnzxjs_val1">
<value6="fWjg1Ueo5M_val6">
</item>
我已经用SimpleHTMLDOM尝试过了,但是我做不到任何有效的事情。
不清楚您想要什么样的最终数据结构,但是这段代码将创建一个数组数组,$v_arr
,其中每个子数组都包含一个的值:
<(value\d+)="([^"]*)"
谢谢,这对我很有帮助,但我不明白如何在数组键表示法中添加“value1”、“value2”?像这样['value2']=>'T4PFOipm3u_val4'@Nevada使用它。抓取匹配项。匹配项1将是字典的关键,匹配项2将是它的vlaue@Nevada您需要使用类似Match.groups(1)和Match.groups(2)的东西。您应该使用类似SimpleXML或DOM的XML(不是HTML)解析器,但这甚至不是有效的XML。你是否遗漏了一些来源?
<(value\d+)="([^"]*)"
$v_arr = array();
# split the string up into an array with one <item> per array element
$items = explode("<item>", $text);
foreach ($items as $i) {
# only parse entries that have <value... tags
if (strpos($i, '<value') !== false) {
# parse the value tags, save the matches in $matches
if (preg_match_all('#<(value\d)="(.+?)">#', $i, $matches)) {
# create a new array with valueX as keys, the other string as values.
# push this array on to a results array
$v_arr[] = array_combine( $matches[1], $matches[2] );
}
}
}
print_r($v_arr);
Array
(
[0] => Array
(
[value4] => L5u9eDNV40_val4
[value6] => xcE90l2HyN_val6
[value3] => hJyVXoE4YQ_val3
[value5] => K68yGpDsTR_val5
[value2] => umrVvR8Tfe_val2
[value1] => y6Ms2E5BHe_val1
)
[1] => Array
(
[value4] => T4PFOipm3u_val4
[value2] => upLkW2r8nq_val2
[value3] => 3h7lV6CaHP_val3
[value5] => 4pETv3bt5c_val5
[value1] => iEPZCnzxjs_val1
[value6] => fWjg1Ueo5M_val6
)
)