php的问题:读取文件名,生成javascript和html

时间:2011-03-19 17:41:32

标签: php javascript html file directory

更新

再次问好。我发现自己遇到了一个新问题。 PHP代码在我的PC(wamp服务器)上完美运行,但我现在已将其上传到免费的虚拟主机服务器上,而php部分运行完美(它生成数组)javascript函数本身不起作用,因为没有照片在网站上加载。我尝试通过在函数的第一行添加警报来测试它,看它是否运行但从未出现过。我认为服务器由于某种原因没有意识到它是一个javascript函数,因为我在getphotos.php中也有这个:

window.onload = photos();

从启动照片功能开始,显示文字。当我在js文件中移动该行并将显示文本行放在第一行时,它会显示文本但仍然没有照片。你觉得怎么样????

END OF UPDATE


大家好。我正在建立一个显示一些照片的网站。我希望该网站通过阅读照片文件夹中的文件名自动生成显示照片的html代码,但我还需要使用javascript。所以我通过网络找到了一个用php生成javascript的解决方案,而不是生成我想要的html代码,我认为这就是我需要的。但是......它不起作用X_X。所以我需要别人的帮助!

首先,这是php / javascript(在getPhotos.php中):

<?
header("content-type: text/javascript");

//This function gets the file names of all images in the current directory
//and ouputs them as a JavaScript array
function returnImages() {
    $pattern="(*.jpg)|(*.png)|(*.jpeg)|(*.gif)"; //valid image extensions
    $files = array();
    $curimage=0;
    if($handle = opendir('/photos/')) {
        while(false !== ($file = readdir($handle))){
            if(eregi($pattern, $file)){ //if this file is a valid image
                //Output it as a JavaScript array element
                echo 'galleryArray['.$curimage.']="'.$file .'";';
                $curimage++;
            }
        }
        closedir($handle);
    }
    return($files);
}

//here starts the javascript function
echo 'window.onload = photos;
    function photos(){
    var i;
    var text1 = "";
    var text2 = "";
    var text3 = "";
    var galleryArray=new Array();'; //Define array in JavaScript
returnImages(); //Output the array elements containing the image file names

//short the images in three sets depending on their names and produce the code
echo 'for(i=0; i<galleryArray.length; i++){
    if(galleryArray[i].indexOf("set1_")!=-1){
        text1+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set2_")!=-1){
        text2+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set3_")!=-1){
        text3+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }
}';

//create text nodes and put them in the correct div
echo 'var code1 = document.createTextNode(text1);
    var code2 = document.createTextNode(text2);
    var code3 = document.createTextNode(text3);
    document.getElementById("galleryBox1").appendChild(code1);
    document.getElementById("galleryBox2").appendChild(code2);
    document.getElementById("galleryBox3").appendChild(code3);
}';

?> 

这是mane页面index.html中的代码:

<script type="text/javascript" src="getPhotos.php"></script><!--get photos from dir-->

就是这样,它不起作用!我知道我只是通过提供所有代码并寻求帮助来提出更多要求,但我甚至无法想到什么是错的,更不用说如何解决它了......所以,如果你有任何想法它会很棒。< / p>

2 个答案:

答案 0 :(得分:1)

<{1}}丢失后

;

  

此函数(readdir)可能返回布尔值   FALSE,但也可能返回   非布尔值,其值为   FALSE,例如0或“”。请阅读   关于布尔人的部分了解更多   信息。使用===运算符   测试这个的返回值   功能

http://php.net/manual/en/function.readdir.php

所以尝试使用returnImages()while(false != ($file = readdir($handle))){

答案 1 :(得分:0)

你的正则表达式是错误的。您需要查看正则表达式教程,例如this one