Что должно произойти, так это то, что «именованные элементы» добавляются как кажущиеся свойства объекта document
. Это действительно плохая идея, так как позволяет именам элементов сталкиваться с реальными свойствами document
.
IE затруднил ситуацию, добавив именованные элементы в качестве свойств объекта window
. Это вдвойне плохо, потому что теперь вам нужно избегать именования ваших элементов после того, как захочет использовать какой-либо из объектов document
или window
, которые вы (или любой другой библиотечный код в своем проекте) захотите использовать.
Это также означает, что эти элементы видны как глобальные переменные. К счастью, в этом случае любые реальные глобальные объявления var
или function
в вашем коду затушевывают их, поэтому вам не нужно так беспокоиться об именах здесь, но если вы попытаетесь выполнить присвоение глобальной переменной с конфликтом имя и вы забудете объявить его var
, вы получите сообщение об ошибке в IE, поскольку оно пытается присвоить значение самому элементу.
Обычно считается, что неправильная практика пропускает var
, так как а также полагаться на названные элементы, которые видны на window
или в виде глобальных. Придерживайтесь document.getElementById
, который более широко поддерживается и менее неоднозначен. Вы можете написать тривиальную функцию обертки с более коротким именем, если вам не нравится ввод текста. В любом случае, нет смысла использовать кеш-поиск с id-элементом, поскольку браузеры обычно оптимизируют вызов getElementById
, чтобы использовать быстрый поиск; все, что вы получаете, это проблемы, когда элементы меняются id
или добавляются / удаляются из документа.
Opera скопировала IE, затем присоединился WebKit, и теперь обе ранее нестандартная практика размещения именованных элементов в document
, и ранее применявшаяся только для IE практика помещать их в window
, является стандартизированной HTML5, подход которой заключается в том, чтобы документировать и стандартизировать каждую ужасную практику, причиненную на нас авторами браузеров, делая их частью сети навсегда. Таким образом, Firefox 4 также будет поддерживать это.
Что такое «названные элементы»? Все, что имеет id
, и все, что используется name
для целей идентификации, то есть формы, изображения, привязки и несколько других, но не другие несвязанные экземпляры атрибута name
, например, имена в полях ввода формы, имена параметров в или тип метаданных в
. «Идентификация»
name
s - это те, которые следует избегать в пользу id
.
ранее связанное решение - ужасный кусок кода; почти каждая строка содержит ошибку. Вместо этого используйте fgetcsv :
<?php
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
echo "<tr>";
foreach ($line as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
Вот простая функция для преобразования CSV в HTML-таблицу с использованием php:
function jj_readcsv($filename, $header=false) {
$handle = fopen($filename, "r");
echo '<table>';
//display header row if true
if ($header) {
$csvcontents = fgetcsv($handle);
echo '<tr>';
foreach ($csvcontents as $headercolumn) {
echo "<th>$headercolumn</th>";
}
echo '</tr>';
}
// displaying contents
while ($csvcontents = fgetcsv($handle)) {
echo '<tr>';
foreach ($csvcontents as $column) {
echo "<td>$column</td>";
}
echo '</tr>';
}
echo '</table>';
fclose($handle);
}
Можно назвать эту функцию как jj_readcsv('image_links.csv',true);
, если второй параметр имеет значение true, то первая строка из CSV будет принят в качестве заголовка / заголовка.
Надеюсь, это кому-нибудь поможет. Прокомментируйте, пожалуйста, любые недостатки в этом коде.
Ответ phihag помещает каждую строку в одну ячейку, в то время как вы просите, чтобы каждое значение находилось в отдельной ячейке. Это, кажется, делает это:
<?php
// Create a table from a csv file
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
$row = $line[0]; // We need to get the actual row (it is the first element in a 1-element array)
$cells = explode(";",$row);
echo "<tr>";
foreach ($cells as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>
определить «отображать это динамически»? это подразумевает, что таблица строится с помощью javascript и какого-то Ajax-y-обновления ... если вы просто хотите построить таблицу с использованием PHP, это на самом деле не то, что я бы назвал «динамическим»
Работает ли это, если вы используете экранированные запятые с \?
Имя, возраст, пол
"Кантор \, Георг", 163, М
В большинстве форматов с разделителями требуется экранировать их по порядку правильно разобрать.
Грубый пример Java:
import java.util.Iterator;
public class CsvTest {
public static void main(String[] args) {
String[] lines = { "Name, Age, Sex", "\"Cantor, Georg\", 163, M" };
StringBuilder result = new StringBuilder();
for (String head : iterator(lines[0])) {
result.append(String.format("<tr>%s</tr>\n", head));
}
for (int i=1; i < lines.length; i++) {
for (String row : iterator(lines[i])) {
result.append(String.format("<td>%s</td>\n", row));
}
}
System.out.println(String.format("<table>\n%s</table>", result.toString()));
}
public static Iterable<String> iterator(final String line) {
return new Iterable<String>() {
public Iterator<String> iterator() {
return new Iterator<String>() {
private int position = 0;
public boolean hasNext() {
return position < line.length();
}
public String next() {
boolean inquote = false;
StringBuilder buffer = new StringBuilder();
for (; position < line.length(); position++) {
char c = line.charAt(position);
if (c == '"') {
inquote = !inquote;
}
if (c == ',' && !inquote) {
position++;
break;
} else {
buffer.append(c);
}
}
return buffer.toString().trim();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
}
XmlGrid.net имеет инструмент для конвертирования CSV в HTML-таблицу. Вот ссылка: http://xmlgrid.net/csvToHtml.html
Я использовал ваши образцы данных и получил следующую HTML-таблицу:
<table>
<!--Created with XmlGrid Free Online XML Editor (http://xmlgrid.net)-->
<tr>
<td>Name</td>
<td> Age</td>
<td> Sex</td>
</tr>
<tr>
<td>Cantor, Georg</td>
<td> 163</td>
<td> M</td>
</tr>
</table>
HTML ... тэг может сделать это сам, то есть без PHP или Java.
или см. Этот пост для получения полной информации о выше (со всеми вариантами ..).