#php #csv #xlsx
#php #csv #xlsx
Вопрос:
Я пытаюсь создать простую функцию для получения данных из файла Excel (csv и xlsx) это структура документов
- Дата
- Название
- URL
После получения данных из файлов функция получит содержимое столбца url и получит его html-содержимое с помощью file_get_content()
Проблема в том, что функция поддерживает только файлы csv и file_get_content()
получает только содержимое URL-адреса, заканчивающегося именем файлов :
Пример www.aaa.com/index.php
Для этого URL www.aaa.com/index это делает ошибку :
Это код моей функции :
function getFileFromUrlExel($file){
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if( $ext == "csv" || $ext == "xslx" ){
$fp = fopen($file, "r");
$columnnames = fgetcsv($fp, 1024);
while (true == ($columns = fgetcsv($fp))) {
$row = array_combine($columnnames, $columns);
if($row["URL"] != ""){ $content = file_get_contents($row["URL"]); }else{ $content = "no_content"; }
if($row["title"] != ""){ $name = $row["title"]; }else{ $name= "no_name"; }
file_put_contents("files/".$row["title"].".html", $content);
}
}
}
Комментарии:
1. Боковая панель: Если это не личный проект, который вы делаете в образовательных целях, существует множество хороших проектов, которые помогут вам читать документы csv или xls на PHP. Один пример: github.com/PHPOffice/PHPExcel
2. О, если вы можете позволить себе немного дополнительных затрат, пожалуйста, изучите PHPExcel ( phpexcel.codeplex.com ) … Я уверен, что есть дела поважнее, чем изобретать это колесо! 🙂
3. я стараюсь упростить его, не используя внешний класс с php
4. xslx или xlsx? Независимо от того, насколько я знаю, ни один из них не является csv, поэтому вы не сможете его прочитать
fgetcsv
. Кроме того, Excel «csv» несовместим в разных версиях в отношении кодирования и, возможно, также правил кавычек / разделителей, что затрудняет «простое» его чтение. Поэтому, если вы хотите упростить его, сократите его до csv и подготовьтесь к тому, что он может быть поврежден файлами «csv» из разных версий Excel или использовать существующую библиотеку. Для другой проблемы я бы предположил, что правильный URI должен бытьhttp://www.aaa.com/index.php
. В противном случае вы можете попытаться прочитатьindex.php
в локальном каталогеwww.aaa.com