0

我需要将 HTML 表(行和列)转换为 PHP 数组。例如:

<tr>
   <th rowspan="2">Username</th>
   <th colspan="2">Personal</th>
</tr>
<tr>
    <th>Name</th>
    <th>Birth date</th>
</tr>

在 PHP 中我需要它变成:

array(
     [0] => array(
                 [0] => array(
                             ["value"] => "Username", 
                             ["rowspan"] => "2"),
                 [1] => array(
                             ["value"] => "Personal", 
                             ["colspan"] => "2")
                 ),
     [1] => array(
                 [0] => array(
                             ["value"] => "Name"
                             ),
                 [1] => array(
                             ["value"] => "Birth date"
                             )
                 )
);

所以,想法是,第一个数组将保留行,在每一行内我想要一个列数组,在列内我想要一个包含单元格值和属性的数组,我只需要像 rowspan 这样的属性和科尔斯潘。所以如果你有这个想法并且知道怎么做,请分享,我不需要你为我做,我只需要知道我该怎么做。

4

2 回答 2

0

你应该使用数组的组合,比如

array(
       array("rowspan"=>3,"colspan=>"2","class"=>"abc",id=>"row_1","value"=>array(1,2)
      );

第一个数组包含属性数组和显示数据的值数组

于 2013-02-26T19:03:23.047 回答
0

解决方案(2013 年 3 月 1 日)

所以,这里是解决方案:首先我发送一个表单,其中包含一个包含 html 表格标签的字段。然后我得到包含 html 的字符串,我正在使用 symfony 进行操作,所以在我的操作中我写道: $stringHeader = $request->getParameter('htmlTable');htmlTable 是包含 html 表的表单中的字段(输入)的名称,然后我将字符串转换为 XML:

$xmlstring = <<<XML
<?xml version='1.0'?> 
<document>
$stringHeader
</document>
XML;

最后将数据放入数组中,html的结构如前所述。

$xml = simplexml_load_string($xmlstring);
$header = array();
$columns = array();
foreach ($xml->tr as $tr) {
    foreach ($tr->th as $th) {
        if (isset($th->attributes()->rowspan)) {
            $rowspan = $th->attributes()->rowspan;
            $columns[] = array("value" => "$th", "rowspan" => "$rowspan");
        } elseif (isset($th->attributes()->colspan)) {
            $colspan = $th->attributes()->colspan;
            $columns[] = array("value" => "$th", "colspan" => "$colspan");
        } else {
            $columns[] = array("value" => "$th");
        }

    }
    $header[] = $columns;
    unset($columns);
    $columns = array();
}
于 2016-10-15T19:51:35.863 回答