如何使用php解析html以获取数组中的值

如何使用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&

所以我尝试使用JS解析数据。这是我的HTML代码。有10000多条记录需要解析。仅举几个例子进行澄清:

 $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);