<?php
/*
* 把xml文件的内容转化为数组
*/
function parseXML(){
$file = realpath('seo.xml'); //realpath() 取绝对路径
$seo = @simplexml_load_file($file); //simplexml_load_file() 把xml文档载入对象中 @忽略提示
$seos = array();
foreach($seo->section->article as $art){
$keywords = array();
foreach($art->seo->keywords->keyword as $keyword){
$keywords[] = $keyword; //把keyword内容写成一个数组
}
$path = '/'.$art->seo->url->path;
$path = filterPath($path); //调用filterPath()函数
$seos[$path] = array(
'title' => ''.$art->seo->title,
'keywords' => implode(', ', $keywords), //implode() 把数组元素组合为一个字符串
'description' => ''.$art->seo->description,
);
}
return $seos;
}
/*
* 获取seo.array文件的内容,数组形式
*/
function getSeos(){
$seos = unserialize(@file_get_contents('seo.array')); //file_get_contents() 把整个文件读入到一个字符串中
//unserialize()与 serialize()相反
if(!$seos){ //判断是否存在seo.array文件,不存在就生成
$seos = parseXML();
setSeos($seos);
}
return $seos;
}
/*
* 根据$path路径获取seo的值
*/
function getSeo($path){
$seos = getSeos();
return $seos[$path];
}
/*
* 设置seo,把$seos数组转换为流写入seo.array文件中
*/
function setSeos($seos){
return file_put_contents('seo.array', serialize($seos)); //serialize() 返回字符串,此字符串包含value的字节流
//file_put_contents() 把一个字符串写入到文件中
}
/*
* 路径处理函数
*/
function filterPath($path){
$pos = strrpos($path, '?'); //strrpos() 查找字符串在另一个字符串最后一次出现的位置
return ($pos>0) ? substr($path, 0, $pos) : $path ; //substr() 返回字符串的一部位,根据起始位置与结束位置
}
这是同事写的一个Helper类文件,我只是讲解里边的一些内容。