php 获取文件名后缀实例小结

 更新时间:2016年11月25日 17:06  点击:2098
在php文件上传时我们需要获取文件名后缀之后进行简单文件类型判断了,而在php中文件名后缀获取方法很简单并且有很多种,下面我来总结一下。

1.basename()-返回路径的文件名

请看下面php代码:

 代码如下 复制代码

<?php
$path = "/usr/www/html/index.php";
echo basename($path)."<br>";
//如果选择suffix则忽略扩展名
echo basename($path,".php");
?>


运行结果:
index.php
index
2.dirname()-返回当前脚本的文件路径!
php代码:

 代码如下 复制代码


<?php
//——FILE__返回文件完整路径
$dir = dirname(__FILE__);
echo $dir;
?>

运行结果:
F:webzendexercise

3.pathinfo() 返回一个关联数组包含有 path 的信息。
包括以下的数组单元:路径名称dirname,文件名称basename 和 扩展名称extension。
请看下面简单代码演示:

 

 代码如下 复制代码
<?php
$path = "/usr/www/html/index.php";
$pathinfo = pathinfo($path);
echo "目录名称:$pathinfo[dirname]<br>";
echo "文件名称:$pathinfo[basename]<br>";
echo "扩展名:$pathinfo[extension]";
?>

运行结果:
目录名称:/usr/www/html
文件名称:index.php
扩展名:php
4.realpath -- 返回规范化的绝对路径名
php代码如下:

 代码如下 复制代码


<?php
$path = "./exercise/php.txt";
$realpath = realpath($path);
echo $realpath;
?>

最后注意一个小技巧:不同路径的文件路径操作符可能,不同,windows下可以用"/"和"",
linux下只能用"/",所以开发的时候,建议都用"/",如我上面的文件路径写法!

<?php
//方法一:

 代码如下 复制代码
function extend_1($file_name)
{
$retval=“”;
$pt=strrpos($file_name, “.”);
if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt);
return ($retval);
}

//方法二
Php代码

 代码如下 复制代码
function extend_2($file_name)
{
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}


//方法三
Php代码

 代码如下 复制代码
function extend_3($file_name)
{
$extend =explode(“.” , $file_name);
$va=count($extend)-1;
return $extend[$va];
}


//方法四
Php代码

 代码如下 复制代码
function getFileExt($file_name)
{
while($dot = strpos($file_name, “.”))
{
$file_name = substr($file_name, $dot+1);
}
return $file_name;
}

?>

在php中数组与字符串相互转换最常用的方法就是使用explode(),implode()函数来转换了,今天我看一朋友问了一个这样的问题,下面我来整理一下分享给各位。

行看看这两个函数

implode 函数:

使用函数 implode 将数组转换为字符串

explode 函数:

使用函数 explode 将字符串转换成数组

例1.

今天在php论坛中看到以为朋友发了一个帖子请教php如何把字符串转换成数组;作为php程序员的新一第一反应是联想到explode(),implode()这两个函数。新一也是用里面的函数进行转换成数组的。

con[1]=28&selt[1]=1&con[2]=29&selt[2]=4&con[3]=26&selt[3]=4

&con[4]=30&selt[4]=2&con[5]=4&selt[5]=1&con[6]=11&con[7]=12

上面就是网友需要转换成PHP数组的字符串;下面也是新一提供PHP转换代码

 代码如下 复制代码

<?php
$str = 'con[1]=28&selt[1]=1&con[2]=29&selt[2]=4&con[3]=26&selt[3]=4&con[4]=30&selt[4]=2&con[5]=4&selt[5]=1&con[6]=11&con[7]=12';
$arr = explode('&',$str);
$arr2 = array();
foreach($arr as $k=>$v){
        $arr = explode('=',$v);
        $arr2[$k] = $arr[1];
}
print_r($arr2);
?>
//输出
Array
(
    [0] => 28
    [1] => 1
    [2] => 29
    [3] => 4
    [4] => 26
    [5] => 4
    [6] => 30
    [7] => 2
    [8] => 4
    [9] => 1
    [10] => 11
    [11] => 12
)
//第二个
<?php
$str = 'con[1]=28&selt[1]=1&con[2]=29&selt[2]=4&con[3]=26&selt[3]=4&con[4]=30&selt[4]=2&con[5]=4&selt[5]=1&con[6]=11&con[7]=12';
$arr = explode('&',$str);
$arr2 = array();
foreach($arr as $k=>$v){
        $arr = explode('=',$v);
        $arr2[$arr[0]] = $arr[1];
}
print_r($arr2);
?>
//输出
Array
(
    [con[1]] => 28
    [selt[1]] => 1
    [con[2]] => 29
    [selt[2]] => 4
    [con[3]] => 26
    [selt[3]] => 4
    [con[4]] => 30
    [selt[4]] => 2
    [con[5]] => 4
    [selt[5]] => 1
    [con[6]] => 11
    [con[7]] => 12
)


例2.
上面只支持一维数据,如果是二维或三维数据呢

 代码如下 复制代码


//将多维数组中所有的数值转换成字符串????》最多支持三维数组
function implodex( $glue, $array, $separator='' ) {
if ( ! is_array( $array ) ) return $array;
$string = array();

$count = 0;
foreach ( $array as $key => $val ) {
if ( is_array( $val ) )
$val = implode( $glue, $val );

if($count == 0){
$string[] = "{$val}";
}else{
$string[] = "{$glue}{$val}";
}
}

if(empty($separator))$separator = $glue;

return implode( $separator, $string );
}


例3.

将数组转成字符串存储及字符串取出转成数组(serialize & unserialize)

下面看一个实例:

 代码如下 复制代码

<?php
// $Id: test3.php,v 1.0 2011-6-7  goba Exp $
 
/**
 * 测试PHP存储数值
 *
 * @author Lok
 */
 
 
$config = array (
 'host' => 'localhost',
 'user_name' => 'root',
 'password' => '',
 'db_name' => 'ecshop',
 'charset' => 'utf8',
 'remark' => array ('note' => '要注意密码的安全', 'author' => 'Lok')
);
 
 
$str = serialize($config);
$arr = unserialize($str);
 
echo '--------str--------<br />';
var_dump($str);
echo '<br />-------arr----------<br />';
var_dump($arr)
?>结果:

--------str--------
string(221) "a:6:{s:4:"host";s:9:"localhost";
   s:9:"user_name";s:4:"root";
   s:8:"password";s:0:"";
   s:7:"db_name";s:8:"ecshop";
   s:7:"charset";s:4:"utf8";
   s:6:"remark";a:2:{s:4:"note";s:24:"要注意密码的安全";
                s:6:"author";s:3:"Lok";}}"
-------arr----------
array(6) { ["host"]=> string(9) "localhost"
        ["user_name"]=> string(4) "root"
        ["password"]=> string(0) ""
        ["db_name"]=> string(8) "emoishop"
               ["charset"]=> string(4) "utf8"
               ["remark"]=> array(2) { ["note"]=> string(24) "要注意密码的安全"
             ["author"]=> string(3) "Lok" } }

在php 中cookie是我们常用到的,但是可能很多朋友都不知道cookie是怎么工作的,下面小编来给大家整理一下关于php cookie工作原理与一些对于cookie读写操作实例。


Cookie和会话状态

做BS开发,这两个概念必不可少,先来个大概了解,没有实际应用很难深入,深入看参考地址!
什么是 Cookie?
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 Cookie 的基本工作原理如果用户再次访问站点上的页面,当该用户输入 URLwww.*****.com时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点。

Cookie 有哪些用途?
最根本的用途是:Cookie 能够帮助 Web 站点保存有关访问者的信息。更概括地说,Cookie 是一种保持Web 应用程序连续性(即执行“状态管理”)的方法.使 Web 站点记住您.

•当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:Documents andSettings用户名Cookies目录下。
•cookie是HTTP标头的一部分,因此setcookie()函数必须在HTML本身的任何内容送到浏览器之前调用。这种限制与header()函数一样(如需了解head()函数,请自行查阅)。
•当客户再次访问该网站时,浏览器会自动把C:DocumentsandSettings用户名Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。在PHP5中,客户端发来的cookie将被转换成全局变量。你可以通过$_COOKIE[‘xxx’]读取。
定义一个cookie
•设置cookie:
•语法:boolsetcookie(stringname,[stringvalue,[int expire,[stringpath,[stringdomain,[int secure]]]]]);
本cookie函数可以有6个属性,常用的有3个参数。

1.实例:

 代码如下 复制代码

$value="the best way is by yourself";

setcookie("cookiename",$value,time()+60*60*24*7);

1.接收和处理cookie
PHP对cookie有很好的支持,和form表单一样,接收的时候PHP会自动从web服务器接收HTTP头并且它。接收的时候和表单接收一样,用$_COOKIE[“cookiename”]或者$HTTP_COOKIE_VARS[“cookiename”](不提倡使用)

1.注意:
如果网站有几个不同的文件目录,使用不带路径的cookie,那么只能在设置cookie的文件所在路径下访问到此cookie。如果指定路径,则按照设置时的路径作为访问cookie的指定路径。

创建cookie数组:
1.其一:

 代码如下 复制代码

setcookie("CookieArray[0]","Value1");

setcookie("CookieArray[1]","Value2");

1.其二:

 代码如下 复制代码

setcookie("CookieArray['one']","Value1");

setcookie("CookieArray['two']","Value2");

1.setcookie()中使用数组

 代码如下 复制代码

<?php

setcookie("cookie[three]","cookiethree");

setcookie("cookie[two]","cookietwo");

setcookie("cookie[one]","cookieone");

//刷新页面后,显示出来

if(isset($_COOKIE['cookie'])){

foreach($_COOKIE['cookie']as$name=>$value){

echo"$name:$value<br/>n";

}

}

?>

删除cookie
1.要删除一个已经存在的cookie,有两个办法:
1、调用只带有name参数的setcookie,那么名为这个name的cookie将被从客户机上删掉;

setcookie(“MyCookie”);//删除MyCookie

    2、期时间就行,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。

例如:

 代码如下 复制代码

setcookie(“MyCookie”,”Value”,time()-1);

//删除MyCookie。

要注意:当一个Cookie被删除时,它的值在当前页仍然有效。如果要把cookie设置成在浏览器关闭后就失效。那么可以直接把expiretime设为0,或者不设置此值。

例如:setcookie(“name”,”value”,0)。

cookie注意事项
•1、setcookie()之前不能有任何html输出,就是空格,空白行都不行,必须在html文件的内容输出前设置
•2、setcookie()后,你在当前页调用echo$_COOKIE[“name”]不会有输出。必须刷新或到下一个页面才可以看到cookie值。
•3、不用浏览器对cookie处理不同。客户端可以禁用cookie,浏览器也会限制cookie的数量。一个浏览器能创建的cookie数量最多为300个,并且每个不能超过4KB,每个WEB站点能设置的cookie总数不能超过20个。
•4、cookie是保存在客户端的,用户禁用了cookie,你的cookie自然也就没作用啦!因此,避免过度依赖cookie,要先想好如果cookie被禁用时的解决方案,以备万一。

如果我们需要隐藏下载文件路径我们只要直接输入就可以了,而不需要跳转路径,下面我们来看一个实例,希望对各位同学会有所帮助。
 代码如下 复制代码

<?php
 
//设置头信息,强制下载文件
function download_send_headers($filename) {
    // disable caching
    $now = gmdate("D, d M Y H:i:s");
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
    header("Last-Modified: {$now} GMT");
 
    // force download
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
 
    // disposition / encoding on response body
    header("Content-Disposition: attachment;filename={$filename}");
    header("Content-Transfer-Encoding: binary");
}
 
$file_name='download.csv';
$file_path=dirname ( __FILE__ ).'/file/'.$file_name;
 
download_send_headers($file_name);
readfile($file_path);
exit;
?>
在php中如果是简单的数组合并有很多的方法,但是我今天要求是根据数组ID然后重新合并数组,是要根据分类来操作。

最简单的数组合并我们只要使用array_merge即可

array_merge()将两个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用“+”合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(注意:不是覆盖而是保留最先出现的那个值)。例子:

 代码如下 复制代码

  $array1 = array(1=>'0');
  $array2 = array(1=> "data");
     $result1 = $array2 + $array1;/*结果为$array2的值*/
    print_r($result);
    $result = $array1 + $array2 ;/*结果为$array1的值*/
    print_r($result);
    $result3 = array_merge($array2,$array1);/*结果为$array2和$array1的值,键名被重新分配*/
    print_r($result3);
    $result4 = array_merge($array1,$array2);/*结果为$array1和$array2的值,键名被重新分配*/
    print_r($result4);

输出结果为:
Array ( [1] => data )
Array ( [1] => 0 )
Array (
[0] => data
[1] => 0
)
Array
(
[0] => 0
[1] => data
)

2.当相同数组键名为字符时,“+”运算符与键名为数字时一样,但array_merge()此时会覆盖掉前面相同键名的值。
例子:

 代码如下 复制代码


 $array1 = array('asd'=>'0');
  $array2 = array('asd' => "data");
  $result1 = $array2 + $array1;/*结果为$array2的值*/
  print_r($result);
    $result = $array1 + $array2 ;/*结果为$array1的值*/
    print_r($result);
    $result3 = array_merge($array2,$array1);/*结果为$array1*/
    print_r($result3);
    $result4 = array_merge($array1,$array2);/*结果为$array2*/
    print_r($result4);


输出结果为:

Array ( [asd] => data )
Array ( [asd] => 0 )
Array ( [asd] => 0 )
Array ( [asd] => data )

讲了这么多费话,下面才是我要给各位朋友介绍的

例。

根据分类字段进行数组重组

 代码如下 复制代码


<?php
//需要重组的数组
$arrar=array();
$array[]=array('ItemID' => 110126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 120126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 130126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 140126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 150126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 160126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 170126866896,'CategoryID'=>117);
$array[]=array('ItemID' => 118126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 121126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 132126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 143126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 154126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 165126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 176126866896,'CategoryID'=>117);
//数组根据分类进行重组
$newArray=array();
foreach($array as $val){
    $newArray[$val['CategoryID']][]=$val;
}
 
//删除原始数组释放空间
$array=null;
unset($array);
 
print_r($newArray);
 
?>

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23