0

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

这篇文章的代码片段有效。 这里>>

在我对 $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';
}

然后我只需要目录中最近的 4 个文件名

最后,我需要'function getimages'之外可用的var **filelist []数组,这样我就可以将它分配给html中其他地方的'img.src'标签。**

希望我能更好地描述它。

4

2 回答 2

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);
}

你还有什么需要的吗..?

于 2013-01-27T16:43:58.907 回答
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

我敢肯定,几个月后这看起来会很笨拙..但现在它至少可以工作了。

丹尼斯

于 2013-01-29T20:35:11.703 回答