строки и разделить затем вставить в HTML-таблицу - PullRequest
1 голос
/ 08 апреля 2011

я хочу разделить эту строку по знаку (*)

$string="
How Many Papers*On My Table
How Many Mobiles*Your Brother have
";

я хочу разделить их и вставить в HTML-таблицу следующим образом

<table border="1" width="100%" id="table1">
    <tr>
        <td>How Many Papers</td>
        <td>On My Table</td>
    </tr>
    <tr>
        <td>How Many Mobiles</td>
        <td>Your Brother have</td>
    </tr>
</table>

Ответы [ 4 ]

1 голос
/ 08 апреля 2011

У вас есть две проблемы: разбиение на строки, которые будут использоваться как <tr> s, и разбиение каждой строки, которая будет использоваться как <td> s:

Чтобы получить каждую строку, вы хотите сначала обрезатьисходная строка, чтобы избавиться от начальных и конечных строк новой строки (чтобы вы не заканчивали пустыми строками в вашем массиве), затем вы можете использовать explode() для создания массива строк, разделенных символом новой строки:

$trimmedString = trim($string);
$lines = explode("\n", $trimmedString);

Вы также можете сжать эти два в одну строку, чтобы устранить необходимость во временной переменной $trimmedString:

$lines = explode("\n", trim($string));

Далее, вы хотите использовать цикл foreach для итерациикаждая строка.Здесь вы создадите строки таблицы и снова используете explode(), чтобы разбить строку на основе звездочек.Вы будете использовать другой цикл foreach для создания самих элементов данных таблицы:

foreach($lines as $line) {
  echo "<tr>";

  $elements = explode("*", $line);
  foreach($elements as $element) {
    echo "<td>" . $element . "</td>";
  }
  echo "</tr>";
}
0 голосов
/ 08 апреля 2011

Я бы предпочел двумерный массив ...

, поэтому спонтанно я бы взял что-то вроде этого:

$line = array();
$line = explode( "\n" , $string );

$cell = array();

for ( $i = 0; != sizeof($line); $i++ ) {
    $cell[$i] = array();
    $cell[$i] = explode("*", $line[$i]);
}

Итак, у вас есть двумерный массив, подобный этому: $ cell [linenumber] [cellnumber]

Чтобы напечатать ячейки таблицы, я бы предпочел вложенные циклы foreach:

foreach ( $cell as $row_number -> $row_array ) {
   echo "<tr>";
   foreach ( $row_array as $cell_number -> $cell_content ) {
       echo "<td>" . $cell_content . "</td>";
   }
   echo "</tr>";
}

Пожалуйста, посмотрите, и если что-то не так, или я допустил некоторые ошибки, пожалуйста,поправь меня;)

0 голосов
/ 08 апреля 2011
$array = explode("\n", (explode('*', $string)));

echo '<table border="1" width="100%" id="table1">';
foreach ($array as $row) {
  echo 'tr>'
  foreach ($row as $sr) {
    echo '<td>'.$sr.'</td>';
  }
  echo '</tr>';
}
echo '</table>';
0 голосов
/ 08 апреля 2011

Вы можете использовать взорваться ()

$string="
How Many Papers*On My Table
How Many Mobiles*Your Brother have
";

// To split by newline
$tmp = explode("\n", $string); 
// To split by *
$data = array();
for($i = 0; $i < count($tmp); $i++) {
    $data[] = explode("*", $tmp[$i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...