php中检查 url 链接是否已经有参数,添加 ? 或 &代码

 更新时间:2016年11月25日 17:29  点击:1962
在php中我们要如何检查 url 链接是否已经有参数,添加 ? 或 &呢,下面我来分享一个函数。
 代码如下 复制代码
<?php
$old_url = $_SERVER["REQUEST_URI"];
  
//检查链接中是否存在 ?
$check = strpos($old_url, '?');
  
//如果存在 ?
if($check !== false)
{
    //如果 ? 后面没有参数,如 hindex.php?
    if(substr($old_url, $check+1) == '')
    {
        //可以直接加上附加参数
        $new_url = $old_url;
    }
    else    //如果有参数,如:index.php?ID=12
    {
        $new_url = $old_url.'&';
    }
}
else    //如果不存在 ?
{
    $new_url = $old_url.'?';
}
  
echo $new_url;
?>
PHP是怎么返回json格式的数据呢,json数据是一种特殊数据格式,可以实时也数据进行交互了,下面我来介绍PHP是怎么返回json格式的数据的吧。

我们常见一些网站在做ajax时返回JSON格式的数据:

返回的是json格式的数据

php输出JSON格式


显然并非所愿。还是字符串,到底怎么实现?其实很简单,只要在php文件头部加入以下代码:

 代码如下 复制代码

header('Content-type: text/json');

示例代码:

 代码如下 复制代码

< ?php
header('Content-type: text/json');

$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(1, 2, 3, 4, 5, 6),
    "holes"   => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>

先来看jquery

 代码如下 复制代码


$(function(){
     $('#send').click(function() {
          $.getJSON('http://blog.meituo.net/wp-content/uploads/php_return_json/test.js', function(data) {
              $('#resText').empty();
   var html = '';
   $.each( data  , function(commentIndex, comment) {
    html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
   })
  $('#resText').html(html);
         })
    })
})

你需要做的就是将数据存储为格式正确的 .json或者.js 文件。以下为示例所传送的json格式的数据

 

 代码如下 复制代码
[
  {
    "username": "张三",
    "content": "沙发."
  },
  {
    "username": "李四",
    "content": "板凳."
  },
  {
    "username": "王五",
    "content": "地板."
  }
]

php 使用json_encode函数,jQuery使用datatype:json的返回类型

本文章来告诉你php如何获取文件夹大小吧,我们递归列出文件然后再利用filesize来统计文件大小并显示出来。
 代码如下 复制代码

<?php
 
//获取文件夹大小
function dir_size($dir) {
    if (!preg_match('#/$#', $dir)) {
        $dir .= '/';
    }
    $totalsize = 0;
    //调用文件列表
    foreach (get_file_list($dir) as $name) {
        $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") :
            (int)@filesize($dir.$name));
    }
    return $totalsize;
}
 
//获取文件列表
function get_file_list($path) {
    $f = $d = array();
    //获取所有文件
    foreach (get_all_files($path) as $name) {
        if (@is_dir($path.$name)) {
            $d[] = $name;
        } else if (@is_file($path.$name)) {
            $f[] = $name;
        }
    }
    natcasesort($d);
    natcasesort($f);
    return array_merge($d, $f);
}
 
//获取所有文件
function get_all_files($path) {
    $list = array();
    if (($hndl = @opendir($path)) === false) {
        return $list;
    }
    while (($file=readdir($hndl)) !== false) {
        if ($file != '.' && $file != '..') {
            $list[] = $file;
        }
    }
    closedir($hndl);
    return $list;
}
 
//转换单位
function setupSize($fileSize) {
    $size = sprintf("%u", $fileSize);
    if($size == 0) {
        return("0 Bytes");
    }
    $sizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i];
}
 
//目录
$path = './test_dir/';
 
//显示文件列表
print_r(get_file_list($path)).'<br>';
 
//显示文件大小
echo dir_size($path).'<br>';
 
//显示转换过单位的大小
echo setupSize(dir_size($path));
 
?>

dir_size() 是获取文件夹大小的函数,函数中使用了递归的方法,此函数需要调用 get_file_list() ,获取文件夹中的所有文件列表,如果文件列表中有文件夹存在,就调用 get_all_files() 获取文件夹下的文件列表。由此取得目标文件夹的大小。

setupSize() 是将传人的大小转换为易于读取的文件单位,可以转换成 Bytes, KB, MB, GB, TB, PB, EB, ZB, YB 等单位。

列2

 代码如下 复制代码

<?php

function getDirSize($dir)
    {
        $handle = opendir($dir);
        while (false!==($FolderOrFile = readdir($handle)))
        {
            if($FolderOrFile != "." && $FolderOrFile != "..")
            {
                if(is_dir("$dir/$FolderOrFile"))
                {
                    $sizeResult += getDirSize("$dir/$FolderOrFile");
                }
                else
                {
                    $sizeResult += filesize("$dir/$FolderOrFile");
                }
            }   
        }
        closedir($handle);
        return $sizeResult;
    }

    // 单位自动转换函数
    function getRealSize($size)
    {
        $kb = 1024;         // Kilobyte
        $mb = 1024 * $kb;   // Megabyte
        $gb = 1024 * $mb;   // Gigabyte
        $tb = 1024 * $gb;   // Terabyte
       
        if($size < $kb)
        {
            return $size." B";
        }
        else if($size < $mb)
        {
            return round($size/$kb,2)." KB";
        }
        else if($size < $gb)
        {
            return round($size/$mb,2)." MB";
        }
        else if($size < $tb)
        {
            return round($size/$gb,2)." GB";
        }
        else
        {
            return round($size/$tb,2)." TB";
        }
    }

    echo getRealSize(getDirSize(dirname($_SERVER[SCRIPT_FILENAME])./include/));


?>

#########################################################

//function dirsize($dir)
//{
//   $handle=opendir($dir);
//   $size = 0;
//   while ( $file=readdir($handle) )
//   {
//       if ( ( $file == "." ) || ( $file == ".." ) ) continue;
//       if ( is_dir("$dir/$file") )
//           $size += dirsize("$dir/$file");
//       else
//           $size += filesize("$dir/$file");
//   }
//   closedir($handle);
//   return $size;
//}
//$big=dirsize(dirname($_SERVER[SCRIPT_FILENAME])."/");
//echo $big;

得到的结果是小数点后两位的

$big*1024 得到单位为KB

条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成平行线的图案对于上面有个大概的了解后,下面我们可以重新整合下代码,更加方便的使用它。
 代码如下 复制代码
<?php
  
function UPCAbarcode($code)
{
    $lw = 2; $hi = 100;
    $Lencode = array('0001101','0011001','0010011','0111101','0100011',
                    '0110001','0101111','0111011','0110111','0001011');
    $Rencode = array('1110010','1100110','1101100','1000010','1011100',
                    '1001110','1010000','1000100','1001000','1110100');
    $ends = '101'; $center = '01010';
  
    /* UPC-A Must be 11 digits, we compute the checksum. */
    if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); }
  
    /* Compute the EAN-13 Checksum digit */
    $ncode = '0'.$code;
    $even = 0; $odd = 0;
    for ($x=0;$x<12;$x++)
    {
        if ($x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; }
    }
  
    $code.=(10 - (($odd * 3 + $even) % 10)) % 10;
  
    /* Create the bar encoding using a binary string */
    $bars=$ends;
    $bars.=$Lencode[$code[0]];
    for($x=1;$x<6;$x++)
    {
        $bars.=$Lencode[$code[$x]];
    }
  
    $bars.=$center;
  
    for($x=6;$x<12;$x++)
    {
        $bars.=$Rencode[$code[$x]];
    }
  
    $bars.=$ends;
  
    /* Generate the Barcode Image */
    $img = ImageCreate($lw*95+30,$hi+30);
    $fg = ImageColorAllocate($img, 0, 0, 0);
    $bg = ImageColorAllocate($img, 255, 255, 255);
    ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg);
  
    $shift=10;
  
    for ($x=0;$x<strlen($bars);$x++)
    {
        if (($x<10) || ($x>=45 && $x<50) || ($x >=85)) { $sh=10; } else { $sh=0; }
        if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; }
        ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color);
    }
  
    /* Add the Human Readable Label */
    ImageString($img,4,5,$hi-5,$code[0],$fg);
  
    for ($x=0;$x<5;$x++)
    {
        ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg);
        ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg);
    }
  
    ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg);
  
    /* Output the Header and Content. */
    header("Content-Type: image/png");
    ImagePNG($img);
  
}
  
UPCAbarcode('13322483157');
  
?>
iframe无刷新文件上传其实就是在当前页面打开了上传程序的页面,有点像ajax局部刷新一个,只是我们把它放到了iframe页面中上传,同时我们把iframe页面给隐藏了。

一个最原始最简单的iframe上传例子:

本例中采用iframe名字,所以表单在提交时会在iframe内打开链接(即无刷新,确切的说应该是
感觉无刷新)
在表单提交时,调用startUpload方法,当然这是JS定义的。


前台上传页面index.html,主要是一个表单与一个js回调函数。上传文件时,form表单的method、 enctype属性必须和下面代码一样。然后将target的值设为iframe的name,这样就可以实现无刷新上传文件。

 代码如下 复制代码

<title>上传文件</title> 
 
<script> 
function CallbackFunction(str){ 
alert("上传成功"); 

</script> 
<form action="uploadfile.php" enctype="multipart/form-data" method="post" target="iframeUpload"> 
 <iframe name="iframeUpload" src="" width="350" height="35" frameborder=0  SCROLLING="no" style="display:NONE"></iframe> 
 <input id="test_file" name="test_file" type="file"> 
 <input value="上传文件" type="submit"> 
</form> 


后台上传处理页面uploadfile.php,这段代码为简单的上传代码,没有进行错误及异常处理。上传代码执行完成后,要告诉父页面已经上传完毕了,因此,在这个页面里调用父页面的回调函数CallbackFunction,这个函数可以有参数,形式自己定义。

 代码如下 复制代码

<?php 
set_time_limit(0); 
if($_SERVER['REQUEST_METHOD']=='POST') { 
  move_uploaded_file($_FILES["test_file"]["tmp_name"], 
  dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]); 
  echo "<script>window.parent.CallbackFunction();</script>"; 

?>

以上是用iframe实现无刷新上传文件的简单方法,想要健壮的程序的话需要再细化


例2

PHP利用iframe上传文件并返回值到父框架

淡水其实也是采用这样的做发法的。正好看到有童鞋博客上有这样写。就顺手贴过来了。

 代码如下 复制代码

if($result)    
{   
echo "上传成功!文件路径为:".$file2;   
echo '<input name="img" type="hidden" value="'.$file2.'" id="img"/>';   
echo'<script>parent.document.form1.img.value=document.getElementById("img").value;</script>';   
}

文件上传成功后,把文件路径写入一个隐藏的域中(img),然后用DOM原理把隐藏域中的VALUE发送到父框架的表单form1的img文本框中:
ok,再来看看淡水的。
淡水编辑器用了tinyMCE,所以有一点点不一样。
我的form页:

 代码如下 复制代码

<script src="tiny_mce/tiny_mce.js" type="text/javascript"></script>
<script type="text/javascript">
    // O2k7 skin
    tinyMCE.init({
        // General options
        mode : "exact",
        elements : "content",
        theme : "advanced",
        skin : "o2k7",
        language : "zh",
        relative_urls : false,
//....略过部分...

    });

    function InsertHtml(type,path){

        type=type.toLowerCase()

        switch(type){
            case '.gif':
            thecode = '<img src="'+path+'" alt=""/>';
            break;
            case '.jpg':
            thecode = '<img src="'+path+'" alt=""/>';
            break;
//......略过部分......
            default :
            thecode = '<a href="'+path+'" target="_blank">Download</a>';
            break;
        }
        tinyMCE.execCommand('mceInsertContent',true,thecode);
    }
</script>

iframe也就是在这个页面里了。
在我的iframe的提交给的php处理里:

 代码如下 复制代码

            $pasteJS = "<script type=text/javascript>n";
            $pasteJS .= "parent.InsertHtml("" . $file_ext . "","" . $upload_src . "");n";
            $pasteJS .= "</script>n";
            echo $pasteJS;

于是上传的文件就跑到tinyMCE的编辑框里了。upload的文件路径也通过userdata会暂存起来,直到写入database。路径保存这块儿,也是在iframe的提交给的php处理文件里的,这里淡水就不多写了。

[!--infotagslink--]

相关文章

  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果

    本文实例讲述了jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果。分享给大家供大家参考,具体如下:这里演示jQuery实现鼠标移动到链接上,滑动展开/隐藏图片效果,鼠标放在“上一页”“下一页”上,立即浮现出所对应的图...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • C#中添加窗口的步骤详解

    下面小编就为大家带来一篇C#中添加窗口的步骤详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • vue项目,代码提交至码云,iconfont的用法说明

    这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30