php的程序在firefox访问时提示:内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。
而在ie下就是‘该页无法显示’。
程序用的是ThinkPHP框架,经排查原因,发现是由于程序里使用了ob_start('ob_gzhandler')导致的。
解决方法比较简单:
以下二个问题可能导致此问题产生的。
1、服务器不支持这种压缩格式,可使用function_exists('ob_gzhandler')判断,解决方法:将 ob_start('ob_gzhandler') 改为 ob_start();
2、使用ob_start('ob_gzhandler')时,此前已有内容输出,检查前面内容以及require include调用文件的内容。
若无法找到可以在调用其它文件前使用ob_start(),调用之后使用 ob_end_clean () 来清除输出的内容;
我出现的这个错误,就是由于在ob_start之前有输出内容的了,所以导致程序无法运行。
将图片保存为不同规格的图片的php代码,有需要的朋友可以参考下。
1.图片处理类.imagecls.php
<?php
/**
图片处理类
*/
class imagecls
{
/**
* 文件信息
*/
var $file = array();
/**
* 保存目录
*/
var $dir = '';
/**
* 错误代码
*/
var $error_code = 0;
/**
* 文件上传最大KB
*/
var $max_size = -1;
function es_imagecls()
{
}
private function checkSize($size)
{
return !($size > $this->max_size) || (-1 == $this->max_size);
}
/**
* 处理上传文件
* @param array $file 上传的文件
* @param string $dir 保存的目录
* @return bool
*/
function init($file, $dir = 'temp')
{
if(!is_array($file) || empty($file) || !$this->isUploadFile($file['tmp_name']) || trim($file['name']) == '' || $file['size'] == 0)
{
$this->file = array();
$this->error_code = -1;
return false;
}
else
{
$file['size'] = intval($file['size']);
$file['name'] = trim($file['name']);
$file['thumb'] = '';
$file['ext'] = $this->fileExt($file['name']);
$file['name'] = htmlspecialchars()($file['name'], ENT_QUOTES);
$file['is_image'] = $this->isImageExt($file['ext']);
$file['file_dir'] = $this->getTargetDir($dir);
$file['prefix'] = md5(microtime(true)).rand(10,99);
$file['target'] = "./public/".$file['file_dir'].'/'.$file['prefix'].'.jpg'; //相对
$file['local_target'] = APP_ROOT_PATH."public/".$file['file_dir'].'/'.$file['prefix'].'.jpg';//物理
$this->file = &$file;
$this->error_code = 0;
return true;
}
}
/**
* 保存文件
* @return bool
*/
function save()
{
if(empty($this->file) || empty($this->file['tmp_name']))
$this->error_code = -101;
elseif(!$this->checkSize($this->file['size']))
$this->error_code = -105;
elseif(!$this->file['is_image'])
$this->error_code = -102;
elseif(!$this->saveFile($this->file['tmp_name'], $this->file['local_target']))
$this->error_code = -103;
elseif($this->file['is_image'] &&
(!$this->file['image_info'] = $this->getImageInfo($this->file['local_target'], true)))
{
$this->error_code = -104;
@unlink($this->file['local_target']);
}
else
{
$this->error_code = 0;
return true;
}
return false;
}
/**
* 获取错误代码
* @return number
*/
function error()
{
return $this->error_code;
}
/**
* 获取文件扩展名
* @return string
*/
function fileExt($file_name)
{
return addslashes(strtolower()(substr(strrchr($file_name, '.'), 1, 10)));
}
/**
* 根据扩展名判断文件是否为图像
* @param string $ext 扩展名
* @return bool
*/
function isImageExt($ext)
{
static $img_ext = array('jpg', 'jpeg', 'png', 'bmp','gif','giff');
return in_array($ext, $img_ext) ? 1 : 0;
}
/**
* 获取图像信息
* @param string $target 文件路径
* @return mixed
*/
function getImageInfo($target)
{
$ext = es_imagecls::fileExt($target);
$is_image = es_imagecls::isImageExt($ext);
if(!$is_image)
return false;
elseif(!is_readable($target))
return false;
elseif($image_info = @getimagesize($target))
{
list($width, $height, $type) = !empty($image_info) ? $image_info :
array('', '', '');
$size = $width * $height;
if($is_image && !in_array($type, array(1,2,3,6,13)))
return false;
$image_info['type'] =
strtolower (substr(image_type_to_extension($image_info[2]),1));
return $image_info;
}
else
return false;
}
/**
* 获取是否充许上传文件
* @param string $source 文件路径
* @return bool
*/
function isUploadFile($source)
{
return $source && ($source != 'none') &&
(is_uploaded_file($source) || is_uploaded_file(str_replace()('\\', '\', $source)));
}
/**
* 获取保存的路径
* @param string $dir 指定的保存目录
* @return string
*/
function getTargetDir($dir)
{
if (!is_dir(APP_ROOT_PATH."public/".$dir)) {
@mkdir(APP_ROOT_PATH."public/".$dir);
@chmod(APP_ROOT_PATH."public/".$dir, 0777);
}
return $dir;
}
/**
* 保存文件
* @param string $source 源文件路径
* @param string $target 目录文件路径
* @return bool
*/
private function saveFile($source, $target)
{
if(!es_imagecls::isUploadFile($source))
$succeed = false;
elseif(@copy($source, $target))
$succeed = true;
elseif(function_exists('move_uploaded_file') &&
@move_uploaded_file($source, $target))
$succeed = true;
elseif (@is_readable($source) &&
(@$fp_s = fopen($source, 'rb')) && (@$fp_t = fopen($target, 'wb')))
{
while (!feof($fp_s))
{
$s = @fread($fp_s, 1024 * 512);
@fwrite($fp_t, $s);
}
fclose($fp_s);
fclose($fp_t);
$succeed = true;
}
if($succeed)
{
$this->error_code = 0;
@chmod($target, 0644);
@unlink($source);
}
else
{
$this->error_code = 0;
}
return $succeed;
}
public function thumb($image,$maxWidth=200,$maxHeight=50,$gen = 0,
$interlace=true,$filepath = '',$is_preview = true)
{
$info = es_imagecls::getImageInfo($image);
if($info !== false)
{
$srcWidth = $info[0];
$srcHeight = $info[1];
$type = $info['type'];
$interlace = $interlace? 1:0;
unset($info);
if($maxWidth > 0 && $maxHeight > 0)
$scale = min($maxWidth/$srcWidth, $maxHeight/$srcHeight);
// 计算缩放比例
elseif($maxWidth == 0)
$scale = $maxHeight/$srcHeight;
elseif($maxHeight == 0)
$scale = $maxWidth/$srcWidth;
$paths = pathinfo($image);
$paths['filename'] = trim(strtolower($paths['basename']),
".".strtolower($paths['extension']));
$basefilename = explode()("_",$paths['filename']);
$basefilename = $basefilename[0];
if(empty($filepath))
{
if($is_preview)
$thumbname = $paths['dirname'].'/'.$basefilename.
'_'.$maxWidth.'x'.$maxHeight.'.jpg';
else
$thumbname = $paths['dirname'].'/'.$basefilename.
'o_'.$maxWidth.'x'.$maxHeight.'.jpg';
}
else
$thumbname = $filepath;
$thumburl = str_replace(APP_ROOT_PATH,'./',$thumbname);
if($scale >= 1)
{
// 超过原图大小不再缩略
$width = $srcWidth;
$height = $srcHeight;
if(!$is_preview)
{
//非预览模式写入原图
file_put_contents($thumbname,file_get_contents($image)); //用原图写入
return array('url'=>$thumburl,'path'=>$thumbname);
}
}
else
{
// 缩略图尺寸
$width = (int)($srcWidth*$scale);
$height = (int)($srcHeight*$scale);
}
if($gen == 1)
{
$width = $maxWidth;
$height = $maxHeight;
}
// 载入原图
$createFun = 'imagecreatefrom'.($type=='jpg'?'jpeg':$type);
if(!function_exists($createFun))
$createFun = 'imagecreatefromjpeg';
$srcImg = $createFun($image);
//创建缩略图
if($type!='gif' && function_exists('imagecreatetruecolor'))
$thumbImg = imagecreatetruecolor($width, $height);
else
$thumbImg = imagecreate($width, $height);
$x = 0;
$y = 0;
if($gen == 1 && $maxWidth > 0 && $maxHeight > 0)
{
$resize_ratio = $maxWidth/$maxHeight;
$src_ratio = $srcWidth/$srcHeight;
if($src_ratio >= $resize_ratio)
{
$x = ($srcWidth - ($resize_ratio * $srcHeight)) / 2;
$width = ($height * $srcWidth) / $srcHeight;
}
else
{
$y = ($srcHeight - ( (1 / $resize_ratio) * $srcWidth)) / 2;
$height = ($width * $srcHeight) / $srcWidth;
}
}
// 复制图片
if(function_exists("imagecopyresampled"))
imagecopyresampled($thumbImg, $srcImg, 0, 0, $x, $y, $width, $height,
$srcWidth,$srcHeight);
else
imagecopyresized($thumbImg, $srcImg, 0, 0, $x, $y, $width, $height,
$srcWidth,$srcHeight);
if('gif'==$type || 'png'==$type) {
$background_color = imagecolorallocate($thumbImg, 0,255,0); // 指派一个绿色
imagecolortransparent($thumbImg,$background_color);
// 设置为透明色,若注释掉该行则输出绿色的图
}
// 对jpeg图形设置隔行扫描
if('jpg'==$type || 'jpeg'==$type)
imageinterlace($thumbImg,$interlace);
// 生成图片
imagejpeg($thumbImg,$thumbname,100);
imagedestroy($thumbImg);
imagedestroy($srcImg);
return array('url'=>$thumburl,'path'=>$thumbname);
}
return false;
}
public function make_thumb($srcImg,$srcWidth,$srcHeight,$type,$maxWidth=200,
$maxHeight=50,$gen = 0)
{
$interlace = $interlace? 1:0;
if($maxWidth > 0 && $maxHeight > 0)
$scale = min($maxWidth/$srcWidth, $maxHeight/$srcHeight);
// 计算缩放比例
elseif($maxWidth == 0)
$scale = $maxHeight/$srcHeight;
elseif($maxHeight == 0)
$scale = $maxWidth/$srcWidth;
if($scale >= 1)
{
// 超过原图大小不再缩略
$width = $srcWidth;
$height = $srcHeight;
}
else
{
// 缩略图尺寸
$width = (int)($srcWidth*$scale);
$height = (int)($srcHeight*$scale);
}
if($gen == 1)
{
$width = $maxWidth;
$height = $maxHeight;
}
//创建缩略图
if($type!='gif' && function_exists('imagecreatetruecolor'))
$thumbImg = imagecreatetruecolor($width, $height);
else
$thumbImg = imagecreatetruecolor($width, $height);
$x = 0;
$y = 0;
if($gen == 1 && $maxWidth > 0 && $maxHeight > 0)
{
$resize_ratio = $maxWidth/$maxHeight;
$src_ratio = $srcWidth/$srcHeight;
if($src_ratio >= $resize_ratio)
{
$x = ($srcWidth - ($resize_ratio * $srcHeight)) / 2;
$width = ($height * $srcWidth) / $srcHeight;
}
else
{
$y = ($srcHeight - ( (1 / $resize_ratio) * $srcWidth)) / 2;
$height = ($width * $srcHeight) / $srcWidth;
}
}
// 复制图片
if(function_exists("imagecopyresampled"))
imagecopyresampled($thumbImg, $srcImg, 0, 0, $x, $y, $width, $height,
$srcWidth,$srcHeight);
else
imagecopyresized($thumbImg, $srcImg, 0, 0, $x, $y, $width, $height,
$srcWidth,$srcHeight);
if('gif'==$type || 'png'==$type) {
$background_color = imagecolorallocate($thumbImg, 255,255,255);
// 指派一个绿色
imagecolortransparent($thumbImg,$background_color);
// 设置为透明色,若注释掉该行则输出绿色的图
}
// 对jpeg图形设置隔行扫描
if('jpg'==$type || 'jpeg'==$type)
imageinterlace($thumbImg,$interlace);
return $thumbImg;
}
public function water($source,$water,$alpha=80,$position="0")
{
//检查文件是否存在
if(!file_exists($source)||!file_exists($water))
return false;
//图片信息
$sInfo = es_imagecls::getImageInfo($source);
$wInfo = es_imagecls::getImageInfo($water);
//如果图片小于水印图片,不生成图片
if($sInfo["0"] < $wInfo["0"] || $sInfo['1'] < $wInfo['1'])
return false;
if(is_animated_gif($source))
{
require_once APP_ROOT_PATH."system/utils/gif_encoder.php";
require_once APP_ROOT_PATH."system/utils/gif_reader.php";
$gif = new GIFReader();
$gif->load($source);
foreach($gif->IMGS['frames'] as $k=>$img)
{
$im = imagecreatefromstring($gif->getgif($k));
//为im加水印
$sImage=$im;
$wCreateFun="imagecreatefrom".$wInfo['type'];
if(!function_exists($wCreateFun))
$wCreateFun = 'imagecreatefromjpeg';
$wImage=$wCreateFun($water);
//设定图像的混色模式
imagealphablending($wImage, true);
switch (intval($position))
{
case 0: break;
//左上
case 1:
$posY=0;
$posX=0;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//右上
case 2:
$posY=0;
$posX=$sInfo[0]-$wInfo[0];
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//左下
case 3:
$posY=$sInfo[1]-$wInfo[1];
$posX=0;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//右下
case 4:
$posY=$sInfo[1]-$wInfo[1];
$posX=$sInfo[0]-$wInfo[0];
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//居中
case 5:
$posY=$sInfo[1]/2-$wInfo[1]/2;
$posX=$sInfo[0]/2-$wInfo[0]/2;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
}
//end im加水印
ob_start();
imagegif($sImage);
$content = ob_get_contents();
ob_end_clean();
$frames [ ] = $content;
$framed [ ] = $img['frameDelay'];
}
$gif_maker = new GIFEncoder (
$frames,
$framed,
0,
2,
0, 0, 0,
"bin" //bin为二进制 url为地址
);
$image_rs = $gif_maker->GetAnimation ( );
//如果没有给出保存文件名,默认为原图像名
@unlink($source);
//保存图像
file_put_contents($source,$image_rs);
return true;
}
//建立图像
$sCreateFun="imagecreatefrom".$sInfo['type'];
if(!function_exists($sCreateFun))
$sCreateFun = 'imagecreatefromjpeg';
$sImage=$sCreateFun($source);
$wCreateFun="imagecreatefrom".$wInfo['type'];
if(!function_exists($wCreateFun))
$wCreateFun = 'imagecreatefromjpeg';
$wImage=$wCreateFun($water);
//设定图像的混色模式
imagealphablending($wImage, true);
switch (intval($position))
{
case 0: break;
//左上
case 1:
$posY=0;
$posX=0;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//右上
case 2:
$posY=0;
$posX=$sInfo[0]-$wInfo[0];
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//左下
case 3:
$posY=$sInfo[1]-$wInfo[1];
$posX=0;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//右下
case 4:
$posY=$sInfo[1]-$wInfo[1];
$posX=$sInfo[0]-$wInfo[0];
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
//居中
case 5:
$posY=$sInfo[1]/2-$wInfo[1]/2;
$posX=$sInfo[0]/2-$wInfo[0]/2;
//生成混合图像
imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo[0],$wInfo[1],$alpha);
break;
}
//如果没有给出保存文件名,默认为原图像名
@unlink($source);
//保存图像
imagejpeg($sImage,$source,100);
imagedestroy($sImage);
}
}
if(!function_exists('image_type_to_extension'))
{
function image_type_to_extension($imagetype)
{
if(empty($imagetype))
return false;
switch($imagetype)
{
case IMAGETYPE_GIF : return '.gif';
case IMAGETYPE_JPEG : return '.jpeg';
case IMAGETYPE_PNG : return '.png';
case IMAGETYPE_SWF : return '.swf';
case IMAGETYPE_PSD : return '.psd';
case IMAGETYPE_BMP : return '.bmp';
case IMAGETYPE_TIFF_II : return '.tiff';
case IMAGETYPE_TIFF_MM : return '.tiff';
case IMAGETYPE_JPC : return '.jpc';
case IMAGETYPE_JP2 : return '.jp2';
case IMAGETYPE_JPX : return '.jpf';
case IMAGETYPE_JB2 : return '.jb2';
case IMAGETYPE_SWC : return '.swc';
case IMAGETYPE_IFF : return '.aiff';
case IMAGETYPE_WBMP : return '.wbmp';
case IMAGETYPE_XBM : return '.xbm';
default : return false;
}
}
}
?>
2.get_spec_img()调用图片类,然后再用下面的方法保存不同规格的图片并返回图片连接
//获取相应规格的图片地址
//gen=0:保持比例缩放,不剪裁,如高为0,则保证宽度按比例缩放 gen=1:保证长宽,剪裁
function get_spec_image($img_path,$width=0,$height=0,$gen=0,$is_preview=true)
{
if($width==0)
$new_path = $img_path;
else
{
$img_name = substr($img_path,0,-4);
$img_ext = substr($img_path,-3);
if($is_preview)
$new_path = $img_name."_".$width."x".$height.".jpg";
else
$new_path = $img_name."o_".$width."x".$height.".jpg";
if(!file_exists($new_path))
{
require_once "imagecls.php";
$imagec = new imagecls();
$thumb = $imagec->thumb($img_path,$width,$height,$gen,true,"
",$is_preview);
if(app_conf("PUBLIC_DOMAIN_ROOT")!='')
{
$paths = pathinfo($new_path);
$path = str_replace("./","",$paths['dirname']);
$filename = $paths['basename'];
$pathwithoupublic = str_replace("public/","",$path);
$file_data = @file_get_contents($path.$file);
$img = @imagecreatefromstring($file_data);
if($img!==false)
{
$save_path = "public/".$path;
if(!is_dir($save_path))
{
@mk_dir($save_path);
}
@file_put_contents($save_path.$name,$file_data);
}
}
}
}
return $new_path;
}
3.使用方法:
$small_url=get_spec_image($data['image'],48,48,0);
$<span id="result_box" lang="en">
<span>middle_url</span></span>=get_spec_image($data['image'],120,120,0);
$big_url=get_spec_image($data['image'],200,200,0);
php读写xml文件时,常用到如下的几行:
$xml = simplexml_load_file("example.xml"); //读取xml文件
$newxml = $xml->asXML(); //标准化$xml
$fp = fopen("newxml.xml", "w"); //新建xml文件
fwrite($fp, $newxml); //写入-------xml文件
fclose($fp);
php可以方便的生成和读取xml文件。
主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作。
下面为大家介绍如何使用这些类,供大家学习参考。
一.生成XML文件
对于一个如下XML文件。
<article>
<title>PHP访问MySql数据库 初级篇</title>
<link>http://blog.csdn.net/morewindows/article/details/7102362</link>
</article>
<?xml version="1.0" encoding="UTF-8"?>
<article>
<title>PHP访问MySql数据库 初级篇</title>
<link>http://blog.csdn.net/morewindows/article/details/7102362</link>
</article>
我们来看看如何用PHP来生成:
首先new一个DOMDocument对象并设置编码格式。
$dom->formatOutput= true;
再创建<article>结点和<title>结点
$title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");
然后创建带文本内容的<link>结点
也可以先生成<link>结点再为其添加文本内容。
$linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');
$link->appendChild($linktext);
然后将<title>和<link>结点加入到<article>结点中去
$rootelement->appendChild($link);
最后将<article>结点加入到DOMDocument对象中,
这样一个完整的XML就生成完毕了。再整出整个XML,
saveXML()也可以只输入部分XML文本,如echo $dom->saveXML($link);就只会输出<link>结点:<link>http://blog.csdn.net/morewindows/article/details/7102362</link>
下面再给出一个完整的PHP中数据内容输出到XML文件的例子。该例子会对将一个PHP数组输出到XML文件中。
//将数组输出到XML文件中
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$article_array = array(
"第一篇" => array(
"title"=>"PHP访问MySql数据库 初级篇",
"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"
),
"第二篇" => array(
"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",
"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"
),
"第三篇" => array(
"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",
"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"
),
);
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$rootelement = $dom->createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom->createElement("article", $key);
$title = $dom->createElement("title", $value['title']);
$link = $dom->createElement("link", $value['link']);
$article->appendChild($title);
$article->appendChild($link);
$rootelement->appendChild($article);
}
$dom->appendChild($rootelement);
$filename = "D:test.xml";
echo 'XML文件大小' . $dom->save($filename) . '字节';
?>
#-------------------
//将数组输出到XML文件中
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$article_array = array(
"第一篇" => array(
"title"=>"PHP访问MySql数据库 初级篇",
"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"
),
"第二篇" => array(
"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",
"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"
),
"第三篇" => array(
"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",
"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"
),
);
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$rootelement = $dom->createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom->createElement("article", $key);
$title = $dom->createElement("title", $value['title']);
$link = $dom->createElement("link", $value['link']);
$article->appendChild($title);
$article->appendChild($link);
$rootelement->appendChild($article);
}
$dom->appendChild($rootelement);
$filename = "D:test.xml";
echo 'XML文件大小' . $dom->save($filename) . '字节';
?>
运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)
二.读取XML文件
以读取前文中生成的D:test.xml为例:
<?php
//读取XML文件
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$filename = "D:test.xml";
$article_array = array();
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load($filename);
//得到<article>结点
$articles = $dom->getElementsByTagName("article");
echo '<article> 结点个数 ' . $articles->length;
foreach ($articles as $article)
{
$id = $article->getElementsByTagName("id")->item(0)->nodeValue;
$title = $article->getElementsByTagName("title")->item(0)->nodeValue;
$link = $article->getElementsByTagName("link")->item(0)->nodeValue;
$article_array[$id] = array('title'=>$title, 'link'=>$link);
}
//输出结果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>
#-----------------
<?php
//读取XML文件
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$filename = "D:test.xml";
$article_array = array();
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load($filename);
//得到<article>结点
$articles = $dom->getElementsByTagName("article");
echo '<article> 结点个数 ' . $articles->length;
foreach ($articles as $article)
{
$id = $article->getElementsByTagName("id")->item(0)->nodeValue;
$title = $article->getElementsByTagName("title")->item(0)->nodeValue;
$link = $article->getElementsByTagName("link")->item(0)->nodeValue;
$article_array[$id] = array('title'=>$title, 'link'=>$link);
}
//输出结果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>