Разнесите функцию в PHP
У меня есть следующий файл блокнота;
dbName:
tableName:
numberOfFields:
Я пытаюсь написать приложение php, которое присваивает значение dbName для $ dbName, tableName для $ tableName и numberOfFields для $ numFields.
Мой код:
$handle = @fopen("config.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
list($dbName, $tableName, $numFields) = explode(":", "$buffer");
}
fclose($handle);
}
однако ":" не работает, так как между dbName и именем таблицы есть разрывы строк. Как мне разобрать $ buffer, сохраняя разрывы строк в файле блокнота?
Спасибо.
6 ответов
Посмотрите на file
функция. Он заботится об открытии и чтении файла и возвращает массив строк из файла. Затем вы можете выполнить итерацию по массиву и работать с каждой строкой в отдельности.
Вы можете сделать это:
$data=file_get_contents("file");
$s = preg_split("/\n\n+/m", $data);
print_r($s);
Если вы уверены в содержании строки, и файл не будет расти произвольно большим:
1 <?php
2
3 $handle = @fopen("config.txt", "r");
4 if ($handle) {
5 $buffer = "";
6 while (!feof($handle)) {
7 $buffer = $buffer . trim(fgets($handle, 4096));
8 }
9 fclose($handle);
10
11 list($dbName, $tableName, $numFields) = explode(":", $buffer);
12 }
13
14 ?>
Цикл while будет проходить через все строки и объединяться в один и тот же буфер после удаления пробелов. Это оставляет только содержимое, разделенное ":". Теперь это можно взорвать.
Как писал Николас, feof получает по одной строке за раз, поэтому назначение списка должно происходить вне цикла.
fgets
возвращает только одну строку. Выхода нет $buffer
будет когда-либо иметь все три предмета одновременно, так что назначение list()
неправильно. Для первой строки explode()
вернет массив с двумя элементами: "dbName"
(текст перед двоеточием) и ""
(текст после двоеточия).
Это работает:
list ($dbName, $tableName, $numFields) = explode (':', implode ('', file ('config.txt')));
Вы можете использовать chr($INT); функция для поиска разрыва строки в вашем вызове разнесения.
Вы можете найти больше информации о функции chr здесь:
http://php.net/manual/en/function.chr.php
Добавьте вы можете найти символы ascii для разрыва строки в: