龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php HTML页面指定符号,使该符号内的内容当做PHP代码。

时间:2014-10-18 11:42来源:网络整理 作者:网络 点击:
分享到:
HTML页面指定符号,使该符号内的内容当做PHP代码。 [代码片段(109行)]
<?php

   /** 
    * 把一个指定的HTML页面显示。如果有页面中有放PHP代码的地方就执行PHP代码。
    * 放置PHP代码的地方都有$fuhao1和$fuhao2
   * @param unknown_type $filename
   * @param unknown_type $fuhao1
   * @param unknown_type $fuhao2
   */
  function display2($filename,$fuhao1,$fuhao2,$xiandingarr){
    $filestr=file_get_contents($filename);
    $ennable=false;
    $tmpstr=null;
    $isxianding=false;
    $biaojis=xiandingByArr($filestr, $xiandingarr);
    for ($i=0;$i<strlen($filestr);$i++){
        $j=0;
        foreach ($biaojis as $biaoji)
         {
             if($biaoji[0]<=$i&&$biaoji[1]>=$i){
                $j=1;
                $isxianding=true;
             }
         }
         if($j==0){
            $isxianding=false;
         }
         if($isxianding){
            $ennable=false;
         }
        else if($filestr[$i]==$fuhao1){
            $ennable=true;
        }
        else if($filestr[$i]==$fuhao2){
            if($ennable){

                $functioncode=substr($tmpstr, 1);
                $functionname=create_function("", "$functioncode;");
                $functionname();
                $ennable=false;
                $tmpstr=null;
                continue;
            }
        }

        if($ennable){
            $tmpstr.=$filestr[$i];
        }
        else{
            echo $filestr[$i];
        }
    }
    echo $tmpstr;
  }
 /**
  * 过滤指定的字符。使之不当做PHP代码
  * @param unknown_type $str
  * @param unknown_type $xianding1
  * @param unknown_type $xianding2
  * @return multitype:
  */
function xianding($str,$xianding1,$xianding2){
    $pos=-1;
    $resultarr=array();
    while(!(($pos=strpos($str, $xianding1,$pos+1))===false)){
        $tmppos=$pos;
        if(!(($pos=strpos($str, $xianding2,$pos+1))===false)){
            echo $pos;
            $tmparr=array($tmppos,$pos+strlen($xianding2));
            array_push($resultarr, $tmparr);
        }
        else{
            break;
        }
    }
    return $resultarr;
}
/**
 * 根据数组中的数据来过滤,使之不当做PHP代码
 * @param unknown_type $str
 * @param unknown_type $xiandingarr
 * @return multitype:
 */
function xiandingByArr($str,$xiandingarr){
    $pos=-1;
    $resultarr=array();
 foreach ($xiandingarr as $xian){
    while(!(($pos=strpos($str, $xian[0],$pos+1))===false)){
        $tmppos=$pos;
        if(!(($pos=strpos($str, $xian[1],$pos+1))===false)){
            $tmparr=array($tmppos,$pos+strlen($xian[1]));
            array_push($resultarr, $tmparr);
        }
        else{
            break;
        }
    }
 }
    return $resultarr;
}
$filestr=file_get_contents("include.html");
$xianarr=array(
         array("<script>","</script>"),
         array("<style>","</style>")
        );
print_r(xiandingByArr($filestr, $xianarr));
display2("include.html", "{", "}",$xianarr);
?>
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接