Разбор текста в массив в PHP или jQuery - PullRequest
0 голосов
/ 02 февраля 2012
<?php 

$list = "<tr>
          <td>1.</td>
          <td>aaa</td>
          <td>234234</td>

          <td>1.</td>
          <td>bbb</td>
          <td>23423423</td>
        </tr>
        <tr>
          <td>2.</td>
          <td>ccc</td>

          <td>5644</td>
          <td>2.</td>
          <td>ddd</td>
          <td>4566456</td>
        </tr>
        <tr>
          <td>3.</td>

          <td>eee</td>
          <td>456456</td>
          <td>3.</td>
          <td>fff</td>
          <td>456456456</td>
        </tr>
"; ?>

CODEPAD: http://codepad.org/JaxTfBF6

Как я могу получить все значения из второго и пятого TD в каждом TR из переменной $ list?Я хотел бы получить массив.Я могу использовать PHP или JQuery.

$all = array('aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff');

Ответы [ 6 ]

2 голосов
/ 02 февраля 2012
var text = "<tr><td>1.</td><td>aaa</td><td>234234</td><td>1.</td><td>bbb</td><td>23423423</td></tr><tr><td>2.</td><td>ccc</td><td>5644</td><td>2.</td><td>ddd</td><td>4566456</td></tr><tr><td>3.</td><td>eee</td><td>456456</td><td>3.</td><td>fff</td><td>456456456</td></tr>";

var output = $(text).find("td:nth-child(2), td:nth-child(5)").map(function() {
    return $(this).text();
});

console.log(output);
1 голос
/ 02 февраля 2012

Похоже, что у вас уже есть данные на вашем сервере, поэтому нет причин отправлять их клиенту, используйте jQuery для их анализа и отправки обратно в PHP.

входной массив $list в PHP, вы можете сделать следующее.

Сначала сопоставить все <td> элементы

if (preg_match_all('/<td>(.*)<\/td>/U', $list, $res))
    $res = end($res);

Затем отфильтровать все неправильные строки.

$count = 0;
$res = array_filter($res, function($item) use (&$count) {
    return (++$count%3==2);
});

Наконец удалите старые ключи в массиве и верните его.

$res = array_values($res);
print_r($res);

Выше должно возвращаться

Array (
    [0] => aaa       [1] => bbb       [2] => ccc
    [3] => ddd       [4] => eee       [5] => fff
)
1 голос
/ 02 февраля 2012

В PHP вы можете использовать библиотеки DOM или simpleXML для анализа HTML или регулярных выражений.

1 голос
/ 02 февраля 2012

Вы можете использовать jQuery:

var list = $('td:nth-child(2), td:nth-child(5)').map(function(){
   return $(this).text();
}).get()

Он в основном получает пятый элемент каждого td, а затем применяет функцию к каждому элементу, которая заменяет сам элемент его текстовым содержимым.

1 голос
/ 02 февраля 2012

Это было бы довольно просто с помощью jQuery.

Вы можете загружать объекты DOM из строки:

var values = [];
var domObj = $( input_string );

$( 'tr:nth-child(5)', domObj ).each( function() {

   values.push( this.val() );
});
0 голосов
/ 02 февраля 2012

Аналогично другим ответам, но полный рабочий код ...

var all = [];

$("tr").each(function() {
    $(this).find("td:nth-child(2)").each(function() {
        all.push($(this).val());
    });
    $(this).find("td:nth-child(5)").each(function() {
        all.push($(this).val());
    });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...