Intereting Posts
Не понимаю результат в XML-объектах и ​​PHP SimpleXMLElement PHP-код внутри шаблона Blade Laravel 5 Невозможно загрузить композитор – 1 и 1 с доступом ssh к серверу Раунд до ближайших 50 000 в PHP Как я могу сопоставить арабские буквы, используя regexp в php parsing json error: SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON Обрезаемая фатальная ошибка: объект класса mysqli_stmt не может быть преобразован в строку Включить файлы с оператором switch $ _GET? Apache 2.4.6 на сервере Ubuntu: клиент, отказавшийся от конфигурации сервера (PHP FPM) Удалить символ ZERO WIDTH NON-JOINER из строки в PHP API Office365 – доступ к другим календарям пользователей / комнат возможно ли добавлять свойства к классу в PHP во время выполнения? RegExp в функции preg_match возвращает ошибку браузера PHP или Linux Shell: самый быстрый способ уменьшить текстовый файл с более чем 10 строками, чтобы иметь только последние 10 строк PHP: как получить список классов, реализующих определенный интерфейс?

PHP не читает весь CSV-файл

Я написал простой бит кода, чтобы проверить два параметра и перенаправить пользователя на ссылку.

error_reporting(E_ALL|E_STRICT); ini_set("display_errors", "On"); $secure_box=$_GET['query']; $fh = fopen('db.csv', 'r'); $now = date("dmY"); $data=fgetcsv($fh); $first_name=$data[0]; $date=$data[1]; $url=$data[2]; { if($secure_box == $first_name AND $date>=$now) { header("Location: $url"); exit(); } else { header("Location: http://localhost/x/delivery_method.html"); } exit; ?> 

Моя проблема здесь в том, что весь CSV-файл не читается. Что я могу сделать ?

Related of "PHP не читает весь CSV-файл"

Это то, что я смог придумать. Надеюсь, это правильно.

 <?php error_reporting(E_ALL|E_STRICT); ini_set("display_errors", "On"); $name_value = $_GET['query']; $fh = fopen('db.csv', 'r'); $now = date("dmY"); $line = 1; if (($handle = fopen("db.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); $line++; for ($c = 0; $c < $num; $c++) { if ($name_value == $data[0] AND $data[1] >= $now) { header("Location: $data[2]"); exit(); } else { header("Location: http://localhost/x/client_unauthorized.html"); } } } fclose($handle); } ?> 

Весь файл не читается, потому что вы только вызывали fgetcsv один раз. fgetcsv только считывает по одной строке за раз, вам нужно поместить этот код в цикл.

Ниже приведен пример использования fgetcsv в цикле из php docs по адресу http://www.php.net/fgetcsv :

 <?php // Example #1 Read and print the entire contents of a CSV file $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num fields in line $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> 

Вы можете циклически прочитывать всю строку файла за строкой до EOF и проверять каждую строку по очереди.