cari

Rumah  >  Soal Jawab  >  teks badan

Penapis format GetElementsByTagName (perlukan bantuan segera)

Saya cuba memformat NodeList yang saya dapat melalui getElementsByTagName, sebenarnya saya boleh mendapatkan kandungan setiap tag, tetapi saya tidak boleh menapis, saya cuba membuat output seperti ini:

EXAMPLE:

name: jhon doe
number: 12345678
date: 00/00/0000

Tetapi saya hanya mendapat kandungan biasa:

JOHN DOE
12345678
00/00/0000
lane DOE
7234567890
00/30/0000

Atau jika saya menggunakan [0], ia hanya mengembalikan huruf/nombor pertama setiap tag.

J
1
0
l
7
3

Kod semasa saya ada di bawah, ada petua tentang perkara yang boleh saya lakukan?

<?php
$string = '
<tbody>
<tr>
<td>JOHN DOE</td>
<td style="background-color: rgb(25, 194, 25);">12345678</td>
<td>00/00/0000</td>
</tr>
<tr>
<td>lANE DOE</td>
<td style="background-color: rgb(25, 194, 25);">7234567890</td>
<td>30/00/0000</td>
</tr>
</tbody>';
$dom = new DOMDocument();
$dom->loadHTML($string);
foreach($dom->getElementsByTagName('td') as $td) {
    echo $td->textContent[0] . '<br/>';
}

P粉518799557P粉518799557276 hari yang lalu562

membalas semua(2)saya akan balas

  • P粉464208937

    P粉4642089372024-04-02 19:49:46

    Kesilapan yang anda lakukan ialah anda menggunakan tag td, yang tidak mengembalikan setiap rekod tetapi setiap nilai (lihat kod anda).

    Mula-mula anda hendaklah menggunakan tag "tr"

    Kedua, anda harus menggunakan nodeValue untuk mendapatkan data bagi mana-mana item tertentu dengan indeks sebutan

    Kod yang diperbetulkan diberikan untuk rujukan anda Jika ada yang kurang jelas, sila tanya soalan

    
    
    JOHN DOE
    12345678
    00/00/0000
    
    
    lANE DOE
    7234567890
    30/00/0000
    
    ';
    $dom = new DOMDocument();
    $dom->loadHTML($string);
    $tr = $dom->getElementsByTagName('tr');
    echo $tr->item(0)->nodeValue;

    Jika anda ingin mengeluarkan semua item, anda boleh menggunakan gelung

    balas
    0
  • P粉546257913

    P粉5462579132024-04-02 12:23:08

    Dari manakah anda menjangkakan 姓名号码日期 berasal? PHP tidak tahu apa maksud nilai jadual, jadi anda perlu menetapkannya sendiri entah bagaimana.

    Tiada petunjuk dalam HTML maksud setiap sel jadual, jadi anda hanya boleh meneka dan berharap struktur jadual tidak pernah berubah. Jadual diisih mengikut nama - nombor - tarikh, jadi anda boleh menyimpulkan daripada nombor sel bahawa label untuk tertentu mestilah: 0 = nama, 1 = nombor, 2 = tarikh.

    Jadi, jika anda menghuraikan HTML untuk setiap jadual baris , dan kemudian menghuraikan setiap baris untuk setiap jadual sel , anda boleh menambah teg berdasarkan susunan sel.

    Tetapi sila ambil perhatian bahawa jika kandungan HTML datang daripada sumber luaran dan ia mengubah susunan sel, ralat akan berlaku.

    //create an array of labels, based on the cell order per row
    $labels=[
        0=>'name',
        1=>'number',
        2=>'date'
        ];
    
    $dom = new DOMDocument();
    $dom->loadHTML($string);
    
    // search for table ROWS
    $table_rows = $dom->getElementsByTagName('tr');
    
    //loop the ROWS
    foreach($table_rows as $row){
       //per ROW node, search for table CELLS
       $row_cells = $row->getElementsByTagName('td');
       //loop the CELLS
       foreach($row_cells as $number => $cell){
         //echo a label based on the cell order + the contents of the cell
         echo $labels[$number].' - '.$cell->textContent.'
    '; } }

    balas
    0
  • Batalbalas