从远程目录获取文件列表并将其作为数组返回

时间:2013-01-27 16:36:54

标签: php javascript html

项目:我正在尝试从NOAA服务器获取图像文件列表(它是打开并允许的)。文件名基于时间戳是半随机的。我需要将dir列表返回给数组。

此帖子的代码段有效。  HERE >>

在我硬编码$ url:

后,它看起来像
<?php
$url = 'http://radar.weather.gov/ridge/RadarImg/NCR/JAX/';
$html = file_get_contents($url);
$count = preg_match_all('/<td><a href="([^"]+)">[^<]*<\/a><\/td>/i', $html, $files);
for ($i = 0; $i < $count; ++$i) {
    echo "File: " . $files[1][$i] . "<br />\n";
}
?>

call the  function getimages (NCR, JAX) ;
function getimages (ncr_or_nzt, the_site_name) {
    var filelist =new array (); 
    var filelist = 'http://mysite.com/mypath/getimages.php?ncr_or_nzt&the_site_name';
}

然后我只需要dir

中的4个最新文件名

最后,我需要在'function getimages'之外提供的var ** filelist [] 数组,这样我就可以将其设置为html中其他位置的'img.src'标记。** < / p>

希望我能更好地描述它。

2 个答案:

答案 0 :(得分:0)

最简单......

var filelist = new Array(); // declare array outside of function first

function getimages(ncr_or_nzt, the_site_name) {
    filelist.push('http://mysite.com/mypath/getimages.php?ncr_or_nzt&the_site_name');
}

// filelist is now available outside of the function

将参数传递给PHP ...

$argv是一个命令行参数数组。你应该测试一下nuber等等,但是为了让你开始......

$url = sprintf('http://radar.weather.gov/ridge/RadarImg/%s/%s/', $argv[0], $argv[1]);

此外,如果您使用PHP作为CLI脚本,请将#!/usr/bin/php(或PHP的位置放在您的操作系统上)并使脚本可执行。在Linux机器上,您可以执行sudo chmod +x [filename],然后可以使用.\[filename]执行。

仅获取前四张图片

最后,要获得最近的四张图片,您可以执行以下操作...

$count = preg_match_all('/<td><a href="([^"]+)">[^<]*<\/a><\/td>/i', $html, $files);

// turn files array upside down, most recent first and vice versa
$files = array_reverse($files);

if ($count >= 4) {
    $count = 4;
}

或者...

$count = preg_match_all('/<td><a href="([^"]+)">[^<]*<\/a><\/td>/i', $html, $files);

// turn files array upside down, most recent first and vice versa
$files = array_reverse($files);

// slice off the files we want
$files = array_slice($files[1], 0, 4);

然后......

foreach ($files as $file) {
    printf("File: %s<br/>\n", $file);
}

还有什么你需要的吗?

答案 1 :(得分:0)

基本上,这工作..谢谢所有

在html中:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" 
function loadjquery () {
$.ajax({
    "url": "ajaxV6.php",
    "type": "GET",
    "dataType": "json",
    "success": function( data, status, xhr ){
        alert("this is returned from the php ->>" + data[1] );
        noaafilelist = ( data[1] ); //<< assign to global var

    }
});

}

和..

function showResult (){
            alert('this is global ->>' + noaafilelist );
}
PHP中的

和.. ..最后,打印

print json_encode($files[1]);

并使其为html文件的其余部分全局添加:

var noaafilelist; // out side the function

我确信这几个月后看起来很笨拙......但现在它至少起作用了。

丹尼斯