我目前在php中有数组的问题,
我从html网站请求了所有<li>
个标签:
$dochtml = new DOMDocument();
$dochtml -> loadHTMLFile("my.html");
/*get all li’s*/
$lis = $dochtml -> getElementsByTagName('li');
我的Html Body:
<li>gfvgvefg</li>
<li>ferfergegeg</li>
<li id="vdfvdfvf"></li>
<li id="id_1"> My Value 1</li>
<li id="id_2"> My Value 2</li>
<li id="id_3"> My Value 3</li>
<li id="id_4"> My Value 4</li>
<li></li>
<li id="efgvefgvfg">gfegvefgbv</li>
然后我回显来自<li>
标签的所有ID和值:
foreach($lis as $key) {
$id = $key -> getAttribute('id');
$value = $key -> nodeValue;
echo $id. ' - '.$value.'<br>';
}
输出:
0 - gfvgvefg
0 - ferfergegeg
vdfvdfvf - 0
id_1 - My Value 1
id_2 - My Value 2
id_3 - My Value 3
id_4 - My Value 4
0 - 0
efgvefgvfg - gfegvefgbv
你看到一些id是0,也是值。
我想要的是这个输出(print_r):
Array ( [id_1] => My Value 1
[id_2] => My Value 2
[id_3] => My Value 3
[id_4] => My Value 4)
所以只有id为id的id和*以及数组中的正确值。
我试试这个:
foreach($lis as $key) {
// gets, and outputs the ID and content of each DIV
$id = $key -> getAttribute('id');
$value = $key -> nodeValue;
//echo $id. ' - '.$value.'<br>';
$array = array($value => $id);
$matches = preg_grep('/^id_(\w+)/i', $array);
print_r($matches);
}
但是我得到了这个输出(print_r):
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )
没有id没有价值,没有。 我知道我可以使用preg_grep的array_keys,但是我只得到id和空数组......
以下是在线编译中的代码,以便更好地理解。
请帮帮我。
答案 0 :(得分:1)
使用XPath:
int LoadData(char** buf1, int* buf1Len, char** buf2, int* buf2Len) {
*buf1Len = DetermineLength1();
*buf1 = (char*)malloc(*buf1Len);
// Fill buf1
*buf2Len = DetermineLength2();
*buf2 = (char*)malloc(*buf2Len);
// Fill buf2
int result = 0; // Or some other INT depending of result
return result;
}
答案 1 :(得分:0)
在一个foreach
中执行所有操作:
$arrLis = array();
foreach($lis as $key) {
$id = $key -> getAttribute('id');
// check if `id` starts with `id_` string
if (strpos($id, 'id_') === 0) {
$value = $key -> nodeValue;
echo $id. ' - '.$value.'<br>';
$arrLis[$id] = $value;
}
}
print_r($arrLis);