выбор и извлечение данных из ячеек HTML-таблицы с помощью PHP

#php

#php

Вопрос:

Я передал эту таблицу в php-файл, используя javascript, с помощью приведенного ниже кода:

     var tbl = document.getElementById("prtable").innerHTML;
    save(tbl);

    function save(tbl)
    {
        var xmlhttp;

        if (window.XMLHttpRequest)
                {// code for IE7 , Firefox, Chrome, Opera, Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else
                {// code for IE6, IE5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange=function() 
                {
                    if (xmlhttp.readyState==4 amp;amp; xmlhttp.status==200) 
                    {


                    }
                }
                xmlhttp.open("POST", "save.php", true);
                xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
                xmlhttp.send("q="  tbl);
            }
}
  

Затем в файле PHP:

     $table = $_POST['q'];
    echo $table;   //test display
  

есть ли способ сделать это подобным образом, чтобы выбрать определенную ячейку в таблице?

 document.getElementById('tableID').rows.item(1).getElementsByTagName("td")[0].innerHTML
  

Есть ли в php эквивалент для этого кода javascript?

Что я хочу с этим сделать, так это иметь возможность извлекать данные из каждого из элементов. Я искал ответы в Интернете, но я застрял на этой проблеме в течение нескольких часов. Если кто-нибудь может мне помочь, я был бы очень признателен.

Спасибо!

Кстати, тест echo $ table отображает что-то вроде этого:

 <tr>
    <th>PR Number</th>
    <th>Item Code</th>
    <th>Description</th>
    <th>Unit of Measure</th>
    <th>Price</th>
    <th>Quantity</th>
    <th>Amount</th>
</tr>
<tr><td>PR001</td><td>IC001</td><td>Gloves (Plastic)</td><td>Pc</td><td>20.00</td><td>2</td><td>40.00</td></tr><tr><td>PR001</td><td>IC002</td><td>Gloves (Rubber)</td><td>Pc</td><td>25.00</td><td>3</td><td>75.00</td></tr></thead>
  

Комментарии:

1. Создается ли эта таблица вашим приложением? Кажется глупым отправлять HTML-таблицу через POST-запрос на сервер IMO. Было бы лучше в формате, подобном JSON или XML.

2. Может помочь простой HTML DOM. simplehtmldom.sourceforge.net если вы хотите продолжать делать это с таблицей.

3. Я получаю эту ошибку: «Неустранимая ошибка: вызов неопределенной функции str_get_html() в D:jongkeePHPwampwwwcapstoneentrysave.php в строке 148». Я использовал $html = str_get_html(‘$table’);

4. нет ли способа сделать это как document.getElementById(‘tableId’).rows.item(1).getElementsByTagName(«td»)[0].innerHTML в javascript? Есть ли в php эквивалент для этого?

Ответ №1:

Короткий ответ — нет, нет встроенной функции PHP для выполнения того, что вы хотите сделать. Вам нужно понимать, что на самом деле делает ваш Javascript и PHP-код.

Ваш Javascript преобразует вашу таблицу в сериализованный формат и затем передает его в PHP. Затем ваш PHP просто считывает данные вашей таблицы как одну очень длинную строку.

Что вы хотите сделать, так это использовать регулярное выражение для разбора различных значений внутри строки, и в конечном итоге вам будет удобнее использовать регулярное выражение для долгосрочного изучения, а не импортировать новую функцию. Я также согласен с AeroX, поскольку вы контролируете обе стороны приложения, вам, вероятно, было бы лучше передать их в формате JSON или XML, и тогда вы сможете очень легко выполнить итерацию через это.

И последнее, но не менее важное: вы действительно хотите очистить свои входные данные. Этот блок кода:

 $table = $_POST['q'];
echo $table;   //test display
  

Это небезопасный код.