【发布时间】:2017-05-07 13:38:46
【问题描述】:
我目前在 php 中遇到了数组问题,
我从一个 html 网站请求了所有 <li> 标签:
$dochtml = new DOMDocument();
$dochtml -> loadHTMLFile("my.html");
/*get all li’s*/
$lis = $dochtml -> getElementsByTagName('li');
我的 HTML 正文:
<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 在一个数组中。
我试试这个:
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 ( )
no id 没有价值,什么都没有。 我知道我可以通过 preg_grep 使用 array_keys,但是我只得到了 id 和空数组……
这是一个在线编译的代码,以便更好地理解。
请帮帮我。
【问题讨论】:
标签: php html arrays preg-match preg-grep