php的pathinfo,php中PathInfo的用法举例(图文)
本節跟大家分享下php中全局變量$_SERVER['PATH_INFO']及pathinfo()函數的用法,就我所了解的當前流行的cms系統,比如dedecms與帝國cms均多有用到這二個,來定義或獲取全局信息。
來看個例子,有如下的網址:
http://www.jbxue.com/index.php/index/do.html?c=index&m=search
則,
$_SERVER['PATH_INFO'] = ‘/index/do.html’
$_SERVER['QUERY_STRING'] = 'c=index&m=search';
這里給出一個解析PATH_INFO的代碼:
/**
* pathinfo應用舉例
* edit by www.jbxue.com
*/
if( !isset( $_SERVER['PATH_INFO'] ) ){
$pathinfo = 'default';
}else{
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
}
if( is_array($pathinfo) AND !empty($pathinfo) ){
$page = $pathinfo[1];
}else{
$page = 'a.php';
}
require "$page.php";
?>
下面再來看一個例子,這里介紹的不再是$_SERVER['PATH_INFO']全局變量了,而是我們今天的主角pathinfo函數。
pathinfo()函數
pathinfo()函數返回一個包含了文件信息的數組,數組中有四個元素,分別是dirname、basename、extension、filename。
例如,有如下的文件路徑,可以用pathinfo進行分解:
//pathinfo函數用法
$path = "/www/jbxue/images/logo.jpg";
$fileArr = pathinfo($path);
print_r($fileArr);
//輸出結果:Array ( [dirname] => /www/jbxue/images [basename] => logo.jpg [extension] => jpg [filename] => logo )
//根據數組的鍵名就可以獲得對應的鍵值
echo $fileArr['filename'];
//輸出結果:logo
echo $fileArr['extension'];
//輸出結果:jpg
?>
最后,說說pathinfo()函數在處理中文時遇到的問題及解決方法。
問題描述:
pathinfo在處理中文文件名時,如果中文在字首就出現獲取的filename為空,英文在字首后面是中文的則能獲取到。
如下圖所示:
可以用如下的函數取代它,代碼如下:
//增強型的pathinfo函數
//edit by www.jbxue.com
function path_info($filepath)
{
$path_parts = array();
$path_parts ['dirname'] = rtrim(substr($filepath, 0, strrpos($filepath, '/')),"/")."/";
$path_parts ['basename'] = ltrim(substr($filepath, strrpos($filepath, '/')),"/");
$path_parts ['extension'] = substr(strrchr($filepath, '.'), 1);
$path_parts ['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),"/");
return $path_parts;
}
?>
用這個函數去處理中文文件路徑或文件時,就不會有問題了。
如下圖所示:
總結
以上是生活随笔為你收集整理的php的pathinfo,php中PathInfo的用法举例(图文)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php和mysql函数的区别吗,(PHP
- 下一篇: 泊位调度问题 matlab,流水线车间调