在 PHP 或 jQuery 中将文本解析为数组

发布于 2025-01-02 00:08:44 字数 1071 浏览 0 评论 0原文

<?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 的所有值来自变量 $list 的 TR? 我想要接收数组。我可以使用 PHP 或 jQuery。

$all = array('aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff');
<?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

How can i get all values from second and the fifth TD in each TR from variable $list?
i would like receive array. I can use PHP or jQuery.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

旧情勿念 2025-01-09 00:08:44
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);
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);
等往事风中吹 2025-01-09 00:08:44

如果使用 jQuery,这将非常容易。

您可以从字符串加载 DOM 对象:

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

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

   values.push( this.val() );
});

This would be pretty easy with jQuery.

You could load DOM objects from the string:

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

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

   values.push( this.val() );
});
来世叙缘 2025-01-09 00:08:44

使用 PHP,您可以使用 DOM 或 simpleXML 库来解析 HTML 或正则表达式。

With PHP you can use DOM or simpleXML libraries to parse HTML or regular expressions.

ヤ经典坏疍 2025-01-09 00:08:44

您可以使用 jQuery:

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

它基本上检索每个 td 的第五个元素,然后对每个元素应用一个函数,用其文本内容替换元素本身。

You could use jQuery:

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

It basically retrieves the fifth element of every td and then applied a function to each element, which replace the element itself with its text content.

伤感在游骋 2025-01-09 00:08:44

看起来好像你的服务器上已经有了数据,所以没有理由将其发送到客户端,使用 jQuery 解析它,然后将其发送回 PHP。

给定 PHP 中的输入数组 $list,您可以执行以下操作。

首先匹配所有 元素,

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
)

It seems as if you already have the data on your server, so there is no reason to send it to the client, use jQuery to parse it, and then send it back to PHP.

Given your input array $list in PHP, you can do the following.

First match all <td> elements

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

Then filter out all the wrong rows.

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

Finally remove the old keys in the array and return it.

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

The above should return

Array (
    [0] => aaa       [1] => bbb       [2] => ccc
    [3] => ddd       [4] => eee       [5] => fff
)
已下线请稍等 2025-01-09 00:08:44

与其他答案类似,但完整的工作代码......

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());
    });
})

Similar to the other answers, but complete working code...

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());
    });
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文