ftp_rawlist는 문자열 배열을 반환하며 각 문자열은 Linux 시스템에서 LS -L 명령의 출력과 유사합니다.
-rw-r--r-- 1 user group 1234 May 10 10:00 file1.txt
drwxr-xr-x 2 user group 4096 May 09 09:00 folder1
각 줄에 포함 된 정보는 다음과 같습니다.
파일 권한 (예 : -rw-r--- )
하드 링크 수
파일이 속한 사용자
파일은 그룹에 속합니다
파일 크기 (바이트 번호)
수정 날짜 (보통 월, 일, 시간 또는 연도 포함)
파일 이름
구문 분석 프로세스의 초점은 각 줄의 줄을 다양한 필드로 분해하여 키 값 쌍으로 구성하는 것입니다. 샘플 코드는 다음과 같습니다.
<?php
function parseRawList(array $rawList): array {
$files = [];
foreach ($rawList as $line) {
$chunks = preg_split('/\s+/', $line, 9);
if (count($chunks) < 9) {
continue; // 형식 제외,뛰어 올라
}
list($permissions, $links, $owner, $group, $size, $month, $day, $timeOrYear, $name) = $chunks;
// ~에 따르면timeOrYear판사 연도 또는 시간
if (strpos($timeOrYear, ':') !== false) {
// 시간 포함,올해는 현재 연도가 필요합니다
$year = date('Y');
$time = $timeOrYear;
} else {
$year = $timeOrYear;
$time = '00:00';
}
// 완전한 수정 시간을 접합합니다,타임 스탬프로 변환하십시오
$dateStr = "$month $day $year $time";
$timestamp = strtotime($dateStr);
$files[] = [
'name' => $name,
'permissions' => $permissions,
'links' => (int)$links,
'owner' => $owner,
'group' => $group,
'size' => (int)$size,
'modified' => date('Y-m-d H:i:s', $timestamp),
'is_dir' => $permissions[0] === 'd',
];
}
return $files;
}
?>
완전한 예는 FTP 서버에 연결하는 방법을 보여주고 FTP_Rawlist를 호출 한 다음 위의 구문 분석 기능을 사용하여 JSON을 변환하고 출력합니다.
<?php
$ftpServer = 'gitbox.net';
$ftpUser = 'username';
$ftpPass = 'password';
// 설립하다FTP연결하다
$connId = ftp_connect($ftpServer);
if (!$connId) {
die("无法연결하다到FTP섬기는 사람 $ftpServer");
}
// 로그인하십시오
if (!ftp_login($connId, $ftpUser, $ftpPass)) {
ftp_close($connId);
die("FTP로그인하십시오失败");
}
// 원본 파일 목록을 가져옵니다
$rawList = ftp_rawlist($connId, '.');
if ($rawList === false) {
ftp_close($connId);
die("얻다FTP목록이 실패했습니다");
}
// 분석 목록
$filesArray = parseRawList($rawList);
// 산출JSON체재
header('Content-Type: application/json');
echo json_encode($filesArray, JSON_PRETTY_PRINT);
// 关闭연결하다
ftp_close($connId);
// 구문 분석 기능은 위와 동일합니다,약간
?>
위의 방법을 통해 FTP_Rawlist 함수의 문자열 목록 결과를 구조화 된 배열로 변환하고 마지막으로 JSON 형식 데이터를 생성합니다. 이는 PHP 프로그램 내에서 FTP 파일 목록의 작동을 용이하게 할뿐만 아니라 API를 통해 데이터를 프론트 엔드 또는 기타 시스템으로 전송하는 것을 용이하게합니다.
이 방법은 특히 FTP 파일 목록을 기반으로 한 관리 백엔드 또는 파일 브라우징 기능을 구축하는 데 특히 적합하여 데이터 처리를보다 직관적이고 효율적으로 만듭니다.