使用PHP

时间:2015-11-27 03:21:21

标签: php html

我有这个包含用户消息的数组。它包含在变量$arr中,它是一个数组。

使用$arr

时,

var_dump()看起来像这样

var_dump($arr)

我想要做的是合并[0][1]中的表格并得到这样的结果。

aim result

请提及我错过或您想知道的事情。任何想法都会非常感激!

3 个答案:

答案 0 :(得分:4)

要连接同一个表中的某些行,您只需将它们从原始表中提取出来,然后将它们提取到与常用文本部分连接的表中。为此,请举例:

我会将我的文本放在一个数组中:

$data = [
    'Dear User2,<br> <br> Sample text <table style="border-collapse:collapse; width:100%" border="solid"> <tr> <th>TH1</th> <th>TH2</th> <th>TH3</th> </tr> <tr> <td style="width:10%"><center>1</center></td> <td style="width:20%"><center>foo1</center></td> <td style="width:20%"><center>foo1</center></td> </tr> </table> <br> Thank you, <br> Admin',
    'Dear User2,<br> <br> Sample text <table style="border-collapse:collapse; width:100%" border="solid"> <tr> <th>TH1</th> <th>TH2</th> <th>TH3</th> </tr> <tr> <td style="width:10%"><center>2</center></td> <td style="width:20%"><center>foo2</center></td> <td style="width:20%"><center>foo2</center></td> </tr> </table> <br> Thank you, <br> Admin',
    'Dear User2,<br> <br> Sample text <table style="border-collapse:collapse; width:100%" border="solid"> <tr> <th>TH1</th> <th>TH2</th> <th>TH3</th> </tr> <tr> <td style="width:10%"><center>3</center></td> <td style="width:20%"><center>foo3</center></td> <td style="width:20%"><center>foo3</center></td> </tr> </table> <br> Thank you, <br> Admin'
];

常见部分是:

Dear User2,<br> <br> Sample text <table style="border-collapse:collapse; width:100%" border="solid"> <tr> <th>TH1</th> <th>TH2</th> <th>TH3</th> </tr>

</table> <br> Thank you, <br> Admin

因此,如果公共部分始终相同且长度固定,您可以使用一些substr()来提取您需要的内容,例如:

// get common parts
$common_part_1 = substr($data[0], 0, 151);
$common_part_2 = substr($data[0], -36);

$content = '';

// concatenate all content rows
for($i = 0; $i < count($data); $i++){
    $content .= get_content($data[$i]);
}

其中get_content()是将提取包含目标文本的行的函数:

function get_content($data){    
    return substr($data, 151 , strlen($data) - 36 - 151);
}

然后

echo $common_part_1 . $content . $common_part_2;

当然这种方式非常有限,我不建议你使用它,但我试着想一想你怎么做......

第二种方式是使用带preg_match()功能的regex提取文字:

// extract the 1st content row  
$content = get_content($data[0]);

// extract the common parts
$common_parts = str_replace($content, '##content##', $data[0]);

// concatenate all content rows
for($i = 1; $i < count($data); $i++){
    $content .= get_content($data[$i]);
}

function get_content($data){
    $pattern = '/\<\/th\>\s\<\/tr\>(.*)\<\/table\>/';
    preg_match($pattern, $data, $matches);
    return $matches[1];
}

然后

echo str_replace('##content##', $content, $common_parts);

这将为您提供以下两种方式:

希望可以提供帮助。

答案 1 :(得分:1)

您可以将$message拆分为多个部分。

$message = '
     Dear User {APPROVER_SL},<br>
     <br>
     Sample text
     <table style="border-collapse:collapse; width:100%" border="solid">
     <tr>
     <th>TH1</th>
     <th>TH2</th>
     <th>TH3</th>
     </tr>';

$max = 10 // Your number of lines
for($i =0; $i < $max ; $i++){
    $message .= '
        <tr>
           <td style="width:10%"><center>'.$i.'</center></td>
           <td style="width:20%"><center>foo'.$i.'</center></td>
           <td style="width:20%"><center>foo'.$i.'</center></td>
        </tr>';
}

$message .='
</table>
<br>
Thank you, <br>
{SYSTEM_NAME}';

尝试将CS​​S集成到代码中,以便您的代码看起来不那么混乱并且更易于管理。

答案 2 :(得分:0)

请尝试此代码这是示例代码,但您尝试这种逻辑,因为它肯定会帮助您而不是......

<!DOCTYPE html>
<html>
<head>
    <title>Array</title>
</head>
<body>

<?php
    $arr = array
  (
  array("Upendrasinh",100,100),
  array("Ankit dave",200,200),
  array("Krunal Lathiya",300,300),
  array("Arjun Kanani",400,400),
  );

  $arrCount = count($arr);


  // $arrsubcount = count($arr[0]);
  // echo $arrsubcount;
  // echo "<br>";

  $arraycell=count($arr[0][0]);
  $arraycell=$arraycell;

echo '<table border="5px" width="100%">';
        echo "<tr>";
            echo "<th>Name</th>";
            echo "<th>Score</th>";
            echo "<th>Score2</th>";
        echo "</tr>";
  for($arrayrow=0;$arrayrow<=$arrCount-1;$arrayrow++){
            echo "<tr>"."<td>".$arr[$arrayrow][0]. "</td>"; 
                for($arraycolumn=0;$arraycolumn<$arraycell;$arraycolumn++){
                    echo "<td>".$arr[$arrayrow][$arraycell]."</td>";
                    echo "<td>".$arr[$arrayrow][$arraycell+1]."</td>"."</tr>";
                }
    }
  echo '</table>';

?>

</body>
</html>