2017-02-21 4 views
0

いくつかのプログラムによって生成された.htmlファイルからデータベースに自動的にデータをインポートしたいと思います。 これはサンプルコードです:テーブルから配列への情報のスクレイピング - 無効なHTML

<TABLE WIDTH=100%><TD CLASS=pt><A NAME="motherboard">Płyta główna</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Właściwości płyty głównej:</B> 
<TR><TD><TD><TD><TD>ID płyty głównej&nbsp;&nbsp;<TD>&lt;DMI&gt; 
<TR><TD><TD><TD><TD>Nazwa płyty głównej&nbsp;&nbsp;<TD>VMware Virtual Platform 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Producent płyty głównej:</B> 
<TR><TD><TD><TD><TD>Nazwa firmy&nbsp;&nbsp;<TD>VMware, Inc. 
<TR><TD><TD><TD><TD>Informacje o produkcie&nbsp;&nbsp;<TD><A HREF="http://www.vmware.com" TARGET=blank>http://www.vmware.com</A> 
<TR><TD><TD><TD><TD>Uaktualnienie BIOS'u&nbsp;&nbsp;<TD><A HREF="http://www.vmware.com" TARGET=blank>http://www.vmware.com</A> 
<TR><TD><TD><TD><TD>Aktualizacja sterownika&nbsp;&nbsp;<TD><A HREF="http://www.aida64.com/driver-updates" TARGET=blank>http://www.aida64.com/driver-updates</A> 
<TR><TD><TD><TD><TD>Uaktualnienia BIOS'u&nbsp;&nbsp;<TD><A HREF="http://www.aida64.com/bios-updates" TARGET=blank>http://www.aida64.com/bios-updates</A> 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME="memory">Pamięć</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Pamięć fizyczna:</B> 
<TR><TD><TD><TD><TD>W sumie&nbsp;&nbsp;<TD>51200 MB 
<TR><TD><TD><TD><TD>Użytych&nbsp;&nbsp;<TD>3194 MB 
<TR><TD><TD><TD><TD>Wolne&nbsp;&nbsp;<TD>48006 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>6 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Pamięć wirtualna:</B> 
<TR><TD><TD><TD><TD>W sumie&nbsp;&nbsp;<TD>58624 MB 
<TR><TD><TD><TD><TD>Użytych&nbsp;&nbsp;<TD>3670 MB 
<TR><TD><TD><TD><TD>Wolne&nbsp;&nbsp;<TD>54953 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>6 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Plik stronicowania:</B> 
<TR><TD><TD><TD><TD>Plik stronicowania&nbsp;&nbsp;<TD>C:\pagefile.sys 
<TR><TD><TD><TD><TD>Aktualny rozmiar&nbsp;&nbsp;<TD>7424 MB 
<TR><TD><TD><TD><TD>Aktualne/szczytowe użycie&nbsp;&nbsp;<TD>0 MB/0 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>0 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Physical Address Extension (PAE):</B> 
<TR><TD><TD><TD><TD>Obsługiwane przez system operacyjny&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Obsługiwane przez procesor&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Aktywna&nbsp;&nbsp;<TD>Tak 
</TABLE><BR><BR> 

<!-- SW --><TABLE WIDTH=100%><TD CLASS=pt><A NAME="operating system">System operacyjny</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Właściwości systemu operacyjnego:</B> 
<TR><TD><TD><TD><TD>Nazwa systemu operacyjnego&nbsp;&nbsp;<TD>Microsoft Windows Server 2012 R2 Standard 
<TR><TD><TD><TD><TD>Język systemu operacyjnego&nbsp;&nbsp;<TD>Polski (Polska) 
<TR><TD><TD><TD><TD>Język instalatora systemu operacyjnego&nbsp;&nbsp;<TD>Polski (Polska) 
<TR><TD><TD><TD><TD>Typ jądra systemu operacyjnego&nbsp;&nbsp;<TD>Multiprocessor Free (64-bit) 
<TR><TD><TD><TD><TD>Wersja systemu operacyjnego&nbsp;&nbsp;<TD>6.3.9600.18505 (Win2012R2 RTM) 
<TR><TD><TD><TD><TD>Dodatek service pack systemu operacyjnego&nbsp;&nbsp;<TD>- 
<TR><TD><TD><TD><TD>Data Instalacji&nbsp;&nbsp;<TD>2015-01-13 
<TR><TD><TD><TD><TD>Katalog główny systemu operacyjnego&nbsp;&nbsp;<TD>C:\Users\Administrator\WINDOWS 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Własności systemu operacyjnego:</B> 
<TR><TD><TD><TD><TD>Informacja dla debugger'a&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Dwubajtowe zestawy znaków DBCS&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Kontroler domeny&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Zabezpieczenia&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Sieć&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Zdalna sesja&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Tryb awaryjny&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Wolny procesor&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Usługi terminalowe&nbsp;&nbsp;<TD>Tak 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME="logical drives">Dyski logiczne</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD><TD><TD><TD> 
<TR><TD><TD><TD><B>Dysk</B>&nbsp;&nbsp;<TD><B>Typ dysku</B>&nbsp;&nbsp;<TD CLASS=cc><B>System plików</B>&nbsp;&nbsp;<TD CLASS=cr><B>Rozmiar całkowity</B>&nbsp;&nbsp;<TD CLASS=cr><B>Użyte miejsce</B>&nbsp;&nbsp;<TD CLASS=cr><B>Wolne miejsce</B>&nbsp;&nbsp;<TD CLASS=cr><B>% wolnego</B>&nbsp;&nbsp;<TD CLASS=cc><B>Numer seryjny</B> 
<TR><TD><TD><TD>A:&nbsp;&nbsp;<TD>Dysk wymienny&nbsp;&nbsp;<TD CLASS=cc>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cc> 
<TR><TD><TD><TD>C: (System)&nbsp;&nbsp;<TD>Dysk lokalny&nbsp;&nbsp;<TD CLASS=cc>NTFS&nbsp;&nbsp;<TD CLASS=cr>204447 MB&nbsp;&nbsp;<TD CLASS=cr>152671 MB&nbsp;&nbsp;<TD CLASS=cr>51776 MB&nbsp;&nbsp;<TD CLASS=cr>25 %&nbsp;&nbsp;<TD CLASS=cc>CCFB-CFE9 
<TR><TD><TD><TD>D: (Dane)&nbsp;&nbsp;<TD>Dysk lokalny&nbsp;&nbsp;<TD CLASS=cc>NTFS&nbsp;&nbsp;<TD CLASS=cr>511996 MB&nbsp;&nbsp;<TD CLASS=cr>1673 MB&nbsp;&nbsp;<TD CLASS=cr>510323 MB&nbsp;&nbsp;<TD CLASS=cr>100 %&nbsp;&nbsp;<TD CLASS=cc>8AF6-39CA 
<TR><TD><TD><TD>E:&nbsp;&nbsp;<TD>Napęd dysków optycznych&nbsp;&nbsp;<TD CLASS=cc>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cc> 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME="physical drives">Dyski fizyczne</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD> 
<TR><TD><TD CLASS=dt COLSPAN=5>[ Dysk nr 1 - VMware Virtual disk (200 GB) ] 
<TR><TD>&nbsp; 
<TR><TD><TD><TD><B>Partycja</B>&nbsp;&nbsp;<TD><B>Typ partycji</B>&nbsp;&nbsp;<TD><B>Dysk</B>&nbsp;&nbsp;<TD CLASS=cr><B>Przesunięcie początkowe</B>&nbsp;&nbsp;<TD CLASS=cr><B>Długość partycji</B> 
<TR><TD><TD><TD>#1 (Aktywna)&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TD CLASS=cr>1 MB&nbsp;&nbsp;<TD CLASS=cr>350 MB 
<TR><TD><TD><TD>#2&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>C: (System)&nbsp;&nbsp;<TD CLASS=cr>351 MB&nbsp;&nbsp;<TD CLASS=cr>204448 MB 
<TR><TD>&nbsp; 
<TR><TD><TD CLASS=dt COLSPAN=5>[ Dysk nr 2 - VMware Virtual disk (500 GB) ] 
<TR><TD>&nbsp; 
<TR><TD><TD><TD><B>Partycja</B>&nbsp;&nbsp;<TD><B>Typ partycji</B>&nbsp;&nbsp;<TD><B>Dysk</B>&nbsp;&nbsp;<TD CLASS=cr><B>Przesunięcie początkowe</B>&nbsp;&nbsp;<TD CLASS=cr><B>Długość partycji</B> 
<TR><TD><TD><TD>#1&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>D: (Dane)&nbsp;&nbsp;<TD CLASS=cr>1 MB&nbsp;&nbsp;<TD CLASS=cr>511997 MB 
</TABLE><BR><BR> 

おそらく最良の方法は、配列に変換することです。しかし、私はどのように知りません。私はhttp://simplehtmldom.sourceforge.netを使用しようとしましたが、私はまだ私の問題を解決する方法を知らない。これらのテーブルは、奇妙な方法で構築されていると私は発電機で

それを変更することはできません配列が見えるはずです。

Płyta główna 
    Właściwości płyty głównej: 
     ID płyty głównej -> <DMI> 
     Nazwa płyty głównej -> VMware Virtual Platform 

Pamięć 
    Pamięć fizyczna: 
     W sumie -> 51200 MB 

をそれは最も複雑だ - DyskiのlogiczneとDyskiは、DO

をfizyczneあなたはどのようにそれをインポートするアイデアがありますか?

+0

[PHPでHTML/XMLをどのように解析して処理するのですか?](http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in) -php) – chris85

+0

いいえ、そうではありません。私はそのライブラリを使用しようとしましたが、それは私を助けません – Andrej229

+0

質問に何を試したかを追加してください。 – chris85

答えて

0

他の簡単なプロセスがない場合は、独自のHTMLコーバーをロールバックする必要があるようです。私が想定しているものに対して慎重な正規表現パターンを使用すると、予測可能な無効なhtml構造体ができます。希望する文字列を体系的に取得し、配列に配置します。

私はこの仕事をあなたに任せていません。それは私に支払うことはないので...あなたの仕事です。しかし、私はあなたに頭をスタートさせ、それが満足できるまであなたのプロセスを調整し続けさせます。ここで

はあなたの準HTMLコンテンツです: (*注私は自分のコードをテストするために、$ htmlの中"年代をエスケープする必要がありました。)

$html="<TABLE WIDTH=100%><TD CLASS=pt><A NAME=\"motherboard\">Płyta główna</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Właściwości płyty głównej:</B> 
<TR><TD><TD><TD><TD>ID płyty głównej&nbsp;&nbsp;<TD>&lt;DMI&gt; 
<TR><TD><TD><TD><TD>Nazwa płyty głównej&nbsp;&nbsp;<TD>VMware Virtual Platform 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Producent płyty głównej:</B> 
<TR><TD><TD><TD><TD>Nazwa firmy&nbsp;&nbsp;<TD>VMware, Inc. 
<TR><TD><TD><TD><TD>Informacje o produkcie&nbsp;&nbsp;<TD><A HREF=\"http://www.vmware.com\" TARGET=blank>http://www.vmware.com</A> 
<TR><TD><TD><TD><TD>Uaktualnienie BIOS'u&nbsp;&nbsp;<TD><A HREF=\"http://www.vmware.com\" TARGET=blank>http://www.vmware.com</A> 
<TR><TD><TD><TD><TD>Aktualizacja sterownika&nbsp;&nbsp;<TD><A HREF=\"http://www.aida64.com/driver-updates\" TARGET=blank>http://www.aida64.com/driver-updates</A> 
<TR><TD><TD><TD><TD>Uaktualnienia BIOS'u&nbsp;&nbsp;<TD><A HREF=\"http://www.aida64.com/bios-updates\" TARGET=blank>http://www.aida64.com/bios-updates</A> 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME=\"memory\">Pamięć</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Pamięć fizyczna:</B> 
<TR><TD><TD><TD><TD>W sumie&nbsp;&nbsp;<TD>51200 MB 
<TR><TD><TD><TD><TD>Użytych&nbsp;&nbsp;<TD>3194 MB 
<TR><TD><TD><TD><TD>Wolne&nbsp;&nbsp;<TD>48006 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>6 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Pamięć wirtualna:</B> 
<TR><TD><TD><TD><TD>W sumie&nbsp;&nbsp;<TD>58624 MB 
<TR><TD><TD><TD><TD>Użytych&nbsp;&nbsp;<TD>3670 MB 
<TR><TD><TD><TD><TD>Wolne&nbsp;&nbsp;<TD>54953 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>6 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Plik stronicowania:</B> 
<TR><TD><TD><TD><TD>Plik stronicowania&nbsp;&nbsp;<TD>C:\pagefile.sys 
<TR><TD><TD><TD><TD>Aktualny rozmiar&nbsp;&nbsp;<TD>7424 MB 
<TR><TD><TD><TD><TD>Aktualne/szczytowe użycie&nbsp;&nbsp;<TD>0 MB/0 MB 
<TR><TD><TD><TD><TD>Wykorzystanie&nbsp;&nbsp;<TD>0 % 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Physical Address Extension (PAE):</B> 
<TR><TD><TD><TD><TD>Obsługiwane przez system operacyjny&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Obsługiwane przez procesor&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Aktywna&nbsp;&nbsp;<TD>Tak 
</TABLE><BR><BR> 

<!-- SW --><TABLE WIDTH=100%><TD CLASS=pt><A NAME=\"operating system\">System operacyjny</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD WIDTH=16><TD><TD> 
<TR><TD><TD><TD COLSPAN=3><B>Właściwości systemu operacyjnego:</B> 
<TR><TD><TD><TD><TD>Nazwa systemu operacyjnego&nbsp;&nbsp;<TD>Microsoft Windows Server 2012 R2 Standard 
<TR><TD><TD><TD><TD>Język systemu operacyjnego&nbsp;&nbsp;<TD>Polski (Polska) 
<TR><TD><TD><TD><TD>Język instalatora systemu operacyjnego&nbsp;&nbsp;<TD>Polski (Polska) 
<TR><TD><TD><TD><TD>Typ jądra systemu operacyjnego&nbsp;&nbsp;<TD>Multiprocessor Free (64-bit) 
<TR><TD><TD><TD><TD>Wersja systemu operacyjnego&nbsp;&nbsp;<TD>6.3.9600.18505 (Win2012R2 RTM) 
<TR><TD><TD><TD><TD>Dodatek service pack systemu operacyjnego&nbsp;&nbsp;<TD>- 
<TR><TD><TD><TD><TD>Data Instalacji&nbsp;&nbsp;<TD>2015-01-13 
<TR><TD><TD><TD><TD>Katalog główny systemu operacyjnego&nbsp;&nbsp;<TD>C:\Users\Administrator\WINDOWS 
<TR><TD>&nbsp; 
<TR><TD><TD><TD COLSPAN=3><B>Własności systemu operacyjnego:</B> 
<TR><TD><TD><TD><TD>Informacja dla debugger'a&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Dwubajtowe zestawy znaków DBCS&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Kontroler domeny&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Zabezpieczenia&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Sieć&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Zdalna sesja&nbsp;&nbsp;<TD>Tak 
<TR><TD><TD><TD><TD>Tryb awaryjny&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Wolny procesor&nbsp;&nbsp;<TD>Nie 
<TR><TD><TD><TD><TD>Usługi terminalowe&nbsp;&nbsp;<TD>Tak 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME=\"logical drives\">Dyski logiczne</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD><TD><TD><TD> 
<TR><TD><TD><TD><B>Dysk</B>&nbsp;&nbsp;<TD><B>Typ dysku</B>&nbsp;&nbsp;<TD CLASS=cc><B>System plików</B>&nbsp;&nbsp;<TD CLASS=cr><B>Rozmiar całkowity</B>&nbsp;&nbsp;<TD CLASS=cr><B>Użyte miejsce</B>&nbsp;&nbsp;<TD CLASS=cr><B>Wolne miejsce</B>&nbsp;&nbsp;<TD CLASS=cr><B>% wolnego</B>&nbsp;&nbsp;<TD CLASS=cc><B>Numer seryjny</B> 
<TR><TD><TD><TD>A:&nbsp;&nbsp;<TD>Dysk wymienny&nbsp;&nbsp;<TD CLASS=cc>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cc> 
<TR><TD><TD><TD>C: (System)&nbsp;&nbsp;<TD>Dysk lokalny&nbsp;&nbsp;<TD CLASS=cc>NTFS&nbsp;&nbsp;<TD CLASS=cr>204447 MB&nbsp;&nbsp;<TD CLASS=cr>152671 MB&nbsp;&nbsp;<TD CLASS=cr>51776 MB&nbsp;&nbsp;<TD CLASS=cr>25 %&nbsp;&nbsp;<TD CLASS=cc>CCFB-CFE9 
<TR><TD><TD><TD>D: (Dane)&nbsp;&nbsp;<TD>Dysk lokalny&nbsp;&nbsp;<TD CLASS=cc>NTFS&nbsp;&nbsp;<TD CLASS=cr>511996 MB&nbsp;&nbsp;<TD CLASS=cr>1673 MB&nbsp;&nbsp;<TD CLASS=cr>510323 MB&nbsp;&nbsp;<TD CLASS=cr>100 %&nbsp;&nbsp;<TD CLASS=cc>8AF6-39CA 
<TR><TD><TD><TD>E:&nbsp;&nbsp;<TD>Napęd dysków optycznych&nbsp;&nbsp;<TD CLASS=cc>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cr>&nbsp;&nbsp;<TD CLASS=cc> 
</TABLE><BR><BR> 

<TABLE WIDTH=100%><TD CLASS=pt><A NAME=\"physical drives\">Dyski fizyczne</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD> 
<TR><TD><TD CLASS=dt COLSPAN=5>[ Dysk nr 1 - VMware Virtual disk (200 GB) ] 
<TR><TD>&nbsp; 
<TR><TD><TD><TD><B>Partycja</B>&nbsp;&nbsp;<TD><B>Typ partycji</B>&nbsp;&nbsp;<TD><B>Dysk</B>&nbsp;&nbsp;<TD CLASS=cr><B>Przesunięcie początkowe</B>&nbsp;&nbsp;<TD CLASS=cr><B>Długość partycji</B> 
<TR><TD><TD><TD>#1 (Aktywna)&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TD CLASS=cr>1 MB&nbsp;&nbsp;<TD CLASS=cr>350 MB 
<TR><TD><TD><TD>#2&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>C: (System)&nbsp;&nbsp;<TD CLASS=cr>351 MB&nbsp;&nbsp;<TD CLASS=cr>204448 MB 
<TR><TD>&nbsp; 
<TR><TD><TD CLASS=dt COLSPAN=5>[ Dysk nr 2 - VMware Virtual disk (500 GB) ] 
<TR><TD>&nbsp; 
<TR><TD><TD><TD><B>Partycja</B>&nbsp;&nbsp;<TD><B>Typ partycji</B>&nbsp;&nbsp;<TD><B>Dysk</B>&nbsp;&nbsp;<TD CLASS=cr><B>Przesunięcie początkowe</B>&nbsp;&nbsp;<TD CLASS=cr><B>Długość partycji</B> 
<TR><TD><TD><TD>#1&nbsp;&nbsp;<TD>NTFS&nbsp;&nbsp;<TD>D: (Dane)&nbsp;&nbsp;<TD CLASS=cr>1 MB&nbsp;&nbsp;<TD CLASS=cr>511997 MB 
</TABLE><BR><BR>"; 

ここで私はそれに適用されるコードは次のとおりです。ここで

$parent_regex="/<TABLE.*?<A[^>]*>(.*?)<\/A>.*?<\/TABLE><TABLE>(.*?)<\/TABLE>/s"; 
    $child_regex1="/<TR><TD><TD><TD COLSPAN=3><B>(.*?)<\/B>(.*?)<TR><TD>&nbsp;/s"; 
    $child_regex2="/<TR><TD><TD><TD>(<B>.*<\/B>)\s+(.*)/s"; 
    $grandchild_regex1="/<TR><TD><TD><TD><TD>(.*?)&nbsp;&nbsp;<TD>(.*)/"; 
    $grandchild_regex2a="/<TR>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>.*?<B>(.*?)<\/B>\s(.*)/s"; 
    $grandchild_regex2b="/<TR><TD><TD><TD>([A-Z]:.*?)&nbsp;&nbsp;<TD[^>]*?>(.*?)<TD[^>]*?>(.*?)<TD[^>]*?>(.*?)<TD[^>]*?>(.*?)<TD[^>]*?>(.*?)<TD[^>]*?>(.*?)<TD[^>]*?>(.*))/"; 

if(preg_match_all($parent_regex,$html,$matches1)){ 
    $parents=$matches1[1]; 
    foreach($matches1[2] as $p_index=>$child_block){ 
     if(preg_match_all($child_regex1,$child_block,$matches2)){ 
      foreach($matches2[2] as $c_index=>$grandchild_block){ 
       if(preg_match_all($grandchild_regex1,$grandchild_block,$matches3)){ 
        $pairs=array_chunk($matches3[1],2); 
        foreach($pairs as $pair){ 
         $result[$matches1[1][$p_index]][$matches2[1][$c_index]][$pair[0]]=$pair[1]; 
        } 
       }else{ 
        echo "no matches3\n"; 
        //echo "$grandchild_block\n\n"; 
       } 
      } 
     }else{ 
      // unexpected table structure, replace previous line's else with a new capture condition 
      //}elseif(preg_match($child_regexa,$child_block,$matches2)){ 
      //foreach($matches2[1] as $c_index=>$grandchild_block){ 
      // if(preg_match_all($grandchild_regex2a,$grandchild_block,$matches3a)){ 
      // if(preg_match_all($grandchild_regex2b,$grandchild_block,$matches3b)){ 
      //echo "childblock=$child_block\n"; 
      //var_export($matches2[1]); 
      //echo "\n\n"; 
      //var_export($matches2[2]); 
      //echo "\n\n"; 
      // recomb the block and manipulate 
     } 
    }  
}else{ 
    // check regex pattern and $html 
    echo "no matches1"; 
} 
var_export($result); 

が正常に取得されなかったサブセクションのカップルと構築されている配列を表示します Demoです。

キャプチャされていないテキストブロックを順番にエコーアウトし、https://regex101.com/を使用して正規表現のパターンを作成して確認します。

これは仕事の厄介なウサギの穴のようです。強さと決意をお祈りします。

関連する問題