$main=$rs['mainurl'];
$arr = parse_url($main);
list($name,$id) = explode('=',$arr['query']);
if(!empty($this->isStatic) && is_numeric($id))
{
if($rs['bankuai']==0)
$f_dir = "money";
elseif($rs['bankuai']==1)
$f_dir = "stock";
elseif($rs['bankuai']==2)
$f_dir = "field";
elseif($rs['bankuai']==3)
$f_dir = "futures";
elseif($rs['bankuai']==4)
$f_dir = "forex";
elseif($rs['bankuai']==6)
$f_dir = "study";$mainurl = $this->urlPrefix."content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
}elseif($mainurl){
$mainurl = $this->urlPrefix."detail.php?id=".$id;
}else{
$mainurl = $main;
}
如果没有$mainurl这个静态页面的话就会出现错误,在elseif($mainurl)要怎么去判断没有这个页面。
用file_exists()和file_get_contents好像不行的。

解决方案 »

  1.   

    file_exists 参数写上文件的本地路径而不是url
      

  2.   

    $main=$rs['mainurl'];
    $arr = parse_url($main);
    list($name,$id) = explode('=',$arr['query']);
    if(!empty($this->isStatic) && is_numeric($id))
    {
    if($rs['bankuai']==0)
    $f_dir = "money";
    elseif($rs['bankuai']==1)
    $f_dir = "stock";
    elseif($rs['bankuai']==2)
    $f_dir = "field";
    elseif($rs['bankuai']==3)
    $f_dir = "futures";
    elseif($rs['bankuai']==4)
    $f_dir = "forex";
    elseif($rs['bankuai']==6)
    $f_dir = "study";$mainurl = $this->urlPrefix."content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    }elseif(file_exists($mainurl)){
    $mainurl = $this->urlPrefix."detail.php?id=".$id;
    }else{
    $mainurl = $main;
    }
    如果file_exists 参数写上文件的本地路径的话那我的这些变量$f_dir,$rs['bankuai']怎么得来??
      

  3.   

    用curl判断,很简单的,通过返回状态码判断就行了,上百度里找一个,就几行代码
      

  4.   

    不太明白你的意思
    你不是通过$rs['bankuai']的值来得出你的$mainurl这个静态页面所在的本地路径吗?去查这个路径下是否存在这个文件你的$f_dir是从$rs['bankuai']那得到的,而你的$rs['bankuai']怎么来的是你其他程序的事情,至少从你贴得代码没看出来这个值和你最后需要得到$mainurl是子和父的逻辑关系
      

  5.   

    程序貌似有问题$main=$rs['mainurl'];
    $arr = parse_url($main);
    list($name,$id) = explode('=',$arr['query']);
    if(!empty($this->isStatic) && is_numeric($id)){
    $mainurl = $this->urlPrefix."content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    }elseif(file_exists($mainurl)){
    $mainurl = $this->urlPrefix."detail.php?id=".$id;
    }else{
    $mainurl = $main;
    }
    即使执行file_exists($mainurl)这句判断,$mainurl也压根没被赋值。
      

  6.   


    $main=$rs['mainurl'];
    $arr = parse_url($main);
    list($name,$id) = explode('=',$arr['query']);
    if(!empty($this->isStatic) && is_numeric($id)){
            $mainurl = $this->urlPrefix."content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    $html = "../content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    }elseif(file_exists($html )){
        $mainurl = $this->urlPrefix."detail.php?id=".$id;
    }else{
        $mainurl = $main;
    }
    这样的吗?
      

  7.   

    if(xxx){
       A
    }else if(xxx){
       B
    }else{
       C
    }执行了A,就不可能执行B和C,
    同理执行了B,就不可能。
    同理执行了C,就不可能。
      

  8.   

    $main=$rs['mainurl'];
    $arr = parse_url($main);
    list($name,$id) = explode('=',$arr['query']);//如果多个参数 需要改写
    if(!empty($this->isStatic) && is_numeric($id))
    {
    if($rs['bankuai']==0)
    $f_dir = "money";
    elseif($rs['bankuai']==1)
    $f_dir = "stock";
    elseif($rs['bankuai']==2)
    $f_dir = "field";
    elseif($rs['bankuai']==3)
    $f_dir = "futures";
    elseif($rs['bankuai']==4)
    $f_dir = "forex";
    elseif($rs['bankuai']==6)
    $f_dir = "study"; $html = "../content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    if(file_exists($html))
    {
    $mainurl = $this->urlPrefix."content/".$f_dir."/".$rs['bankuai']."/".$rs['newstype']."/".$rs['smalltype']."/".$id.".html";
    }else{
    $mainurl = $this->urlPrefix."detail.php?id=".$id;
    }
    }else {
    $mainurl=$main;
    }
    这样的话怎么就不显示静态的页面了,只显动态的
      

  9.   

    只显示这个$mainurl = $this->urlPrefix."detail.php?id=".$id;了。
    就算静态的页面有也不显示
      

  10.   

    if(!empty($this->isStatic) && is_numeric($id))
    {
    if($rs['bankuai']==0)
    $f_dir = "money";
    elseif($rs['bankuai']==1)
    $f_dir = "stock";
    elseif($rs['bankuai']==2)
    $f_dir = "field";
    elseif($rs['bankuai']==3)
    $f_dir = "futures";
    elseif($rs['bankuai']==4)
    $f_dir = "forex";
    elseif($rs['bankuai']==6)
    $f_dir = "study";
    //$mainurl = $this->urlPrefix."content/".$f_dir."/".$bankuai."/".$newstype."/".$smalltype."/".$id.".html";
    $html = "e:/newtztwebsite/newtzt/content/".$f_dir."/".$bankuai."/".$newstype."/".$smalltype."/".$id.".html";
    //die($html);
    if(file_exists($html))
    {
    $mainurl = $this->urlPrefix."content/".$f_dir."/".$bankuai."/".$newstype."/".$smalltype."/".$id.".html";
    }else{
    $mainurl = $this->urlPrefix."detail.php?id=".$id;
    }
    }else {
    $mainurl=$main;
    }
    这样子就好了的。
    不能用相对路径吗?