如何使用php解析html以获取数组中的值
所以我尝试使用JS解析数据。这是我的HTML代码。有10000多条记录需要解析。仅举几个例子进行澄清:如何使用php解析html以获取数组中的值,php,html,arrays,Php,Html,Arrays,所以我尝试使用JS解析数据。这是我的HTML代码。有10000多条记录需要解析。仅举几个例子进行澄清: $str = '<ul> <li> <a href="https://www.example.com/profile/shrey">Shrey Chathly</a> <p> shrey@yahoo.com</p> <p&
$str = '<ul>
<li>
<a href="https://www.example.com/profile/shrey">Shrey Chathly</a>
<p> shrey@yahoo.com</p>
<p> 9910212121</p>
</li>
<li>
<a href="https://www.example.com/profile/neminath">Neminath</a>
<p> 9818505051</p>
</li>
<li>
<a href="https://www.example.com/profile/mohan">Mohan</a>
<p> Mohan@yahoo.co.in</p>
<p> 9111502287</p>
</li>
<li>
<a href="https://www.example.com/profile/naina">Naina</a>
<p> naina@gmail.com</p>
<p> 9818505001</p>
</li>
<li>
<a href="https://www.example.com/profile/mohan">Rakesh</a>
<p> 9111502222</p>
</li>
</ul>';
我希望输出像:
Array
(
[0] => Array
(
[0] => Shrey Chathly
[1] => shrey@yahoo.com
[2] => 9910212121
)
[1] => Array
(
[0] => Neminath
[1] =>
[2] => 9818505051
)
[2] => Array
(
[0] => Mohan
[1] => mohan@yahoo.co.in
[2] => 9111502287
)
[3] => Array
(
[0] => Naina
[1] => naina@gmail.com
[2] => 9818505001
)
[4] => Array
(
[0] => Rakesh
[1] =>
[2] => 9111502222
)
)
我找不到实现预期产出的方法。
请帮帮我。非常感谢。期望的结果:
Array
(
[0] => Array
(
[0] => Shrey Chathly
[1] => shrey@yahoo.com
[2] => 9910212121
)
[1] => Array
(
[0] => Neminath
[1] =>
[2] => 9818505051
)
[2] => Array
(
[0] => Mohan
[1] => Mohan@yahoo.co.in
[2] => 9111502287
)
[3] => Array
(
[0] => Naina
[1] => naina@gmail.com
[2] => 9818505001
)
[4] => Array
(
[0] => Rakesh
[1] =>
[2] => 9111502222
)
)
可以这样实现:
<?php
$str = '<ul><li><a href="https://www.example.com/profile/shrey">Shrey Chathly</a><p> shrey@yahoo.com</p><p> 9910212121</p></li><li><a href="https://www.example.com/profile/neminath">Neminath</a><p> 9818505051</p></li><li><a href="https://www.example.com/profile/mohan">Mohan</a><p> Mohan@yahoo.co.in</p><p> 9111502287</p></li><li><a href="https://www.example.com/profile/naina">Naina</a><p> naina@gmail.com</p><p> 9818505001</p></li><li><a href="https://www.example.com/profile/mohan">Rakesh</a><p> 9111502222</p></li></ul>';
$data = null;
$dom = new DOMDocument();
$dom->loadHTML($str);
$elements = $dom->getElementsByTagName('li');
foreach($elements as $key => $element) {
foreach($element->getElementsByTagName('a') as $valueA) {
$data[$key][] = trim($valueA->textContent);
}
$pValues = $element->getElementsByTagName('p');
if(count($pValues) >= 2) {
$data[$key][] = trim($pValues[0]->textContent);
$data[$key][] = trim($pValues[1]->textContent);
} elseif (count($pValues) == 1) {
$data[$key][] = null;
$data[$key][] = trim($pValues[0]->textContent);
}
}
echo '<pre>';
print_r($data);
caramba,非常感谢。它起作用了。请把答案标为solved@Mohan谢谢你的回复。只有提问者(在这种情况下是你)才能接受答案。更多详细信息可在此处找到:
<?php
$str = '<ul><li><a href="https://www.example.com/profile/shrey">Shrey Chathly</a><p> shrey@yahoo.com</p><p> 9910212121</p></li><li><a href="https://www.example.com/profile/neminath">Neminath</a><p> 9818505051</p></li><li><a href="https://www.example.com/profile/mohan">Mohan</a><p> Mohan@yahoo.co.in</p><p> 9111502287</p></li><li><a href="https://www.example.com/profile/naina">Naina</a><p> naina@gmail.com</p><p> 9818505001</p></li><li><a href="https://www.example.com/profile/mohan">Rakesh</a><p> 9111502222</p></li></ul>';
$data = null;
$dom = new DOMDocument();
$dom->loadHTML($str);
$elements = $dom->getElementsByTagName('li');
foreach($elements as $key => $element) {
foreach($element->getElementsByTagName('a') as $valueA) {
$data[$key][] = trim($valueA->textContent);
}
$pValues = $element->getElementsByTagName('p');
if(count($pValues) >= 2) {
$data[$key][] = trim($pValues[0]->textContent);
$data[$key][] = trim($pValues[1]->textContent);
} elseif (count($pValues) == 1) {
$data[$key][] = null;
$data[$key][] = trim($pValues[0]->textContent);
}
}
echo '<pre>';
print_r($data);