* @return int item的数量
*/
public function addItems($aParam){
$this->_aChannel['items'][] = $aParam;
return count($this->_aChannel['items']);
}
/**
* 将内容序列化成rss的xml结构数据字符串
* @return string | null
*/
public function getSerialize(){
static $sTemplateChannel = null;
static $sTemplateItem = null;
if (empty($sTemplateChannel) || empty($sTemplateItem)){
$aTmp = array();
$aTmp[] = ' ';
$aTmp[] = ' '. self::LANGUAGE .'';
$aTmp[] = ' '. self::GENERATOR .'';
$aTmp[] = ' '. (60 * 24) .''; //更新时间为24小时
$aTmp[] = ' '. gmdate("D, d M Y 23:59:59", time()) .' GMT'; //当前RSS最后发布的时间
$aTmp[] = ' ';
$aTmp[] = ' ';
$aTmp[] = ' ';
$aTmp[] = '{@item}';
$aTmp[] = ' ';
$sTemplateChannel = implode("\n", $aTmp);
unset($aTmp);
$aTmp = array();
$aTmp[] = ' ';
$aTmp[] = ' ';
$aTmp[] = ' {@item_link}';
$aTmp[] = ' ';
$aTmp[] = ' ';
$aTmp[] = ' ';
$aTmp[] = ' {@item_pubdate}'; //文章发布时间
$aTmp[] = ' ';
$sTemplateItem = implode("\n", $aTmp);
unset($aTmp);
}
if (!empty($this->_aChannel)){
$aTmpItem = array();
foreach ($this->_aChannel['items'] as $aItem){ //内层遍历item
$aParam = array(
'{@item_title}'=> self::convert_encoding($aItem['title'], self::LOCAL_CHARSET),
'{@item_link}'=> $aItem['link'],
'{@item_description}'=> self::convert_encoding($aItem['description'], self::LOCAL_CHARSET),
'{@item_category}'=> self::convert_encoding($aItem['category'], self::LOCAL_CHARSET),
'{@item_pubdate}'=> gmdate("D, d M Y 23:59:59", $aItem['utc_timestemp']) .' GMT',
);
$aTmpItem[] = strtr($sTemplateItem, $aParam);
unset($aParam);$aParam=null;
}
$aParam = array(
'{@channel_title}'=> self::convert_encoding($this->_aChannel['channel']['title'], self::LOCAL_CHARSET),
'{@channel_link}'=> $this->_aChannel['channel']['link'],
'{@channel_description}'=> self::convert_encoding($this->_aChannel['channel']['description'], self::LOCAL_CHARSET),
'{@item}'=> implode("\n", $aTmpItem),
);
$aOutBuf = array();
$aOutBuf[] = '';
$aOutBuf[] = '';
$aOutBuf[] = strtr($sTemplateChannel, $aParam);;
unset($aParam);$aParam=null;
$aOutBuf[] = '';
return implode("\n", $aOutBuf);
}else{
return null;
}
}
/**
* 对变量内容的进行字符编码转换
* @param string $sInCharset 转换前的字符集
* @param string $sOutCharset 转换后的字符集
* @param string | array $mixd 待转换的变量(数组或字符串)
* @return string | array 完成转换后的结果
*/
static public function convert_encoding(& $mixd, $sInCharset, $sOutCharset='utf-8') {
if ($sInCharset === $sOutCharset) //字符集相同时不转换
return $mixd;
if (is_array($mixd)) {
$tmp = array();
foreach ($mixd as $key => $val) {
$tmp[$key] = self::convert_encoding($sInCharset, $sOutCharset, $val);
}
return $tmp;
} else { //字符集相同时不转换
return mb_convert_encoding($mixd, $sOutCharset, $sInCharset);
}
}
} Ändern Sie bei der Verwendung die verschiedenen darin enthaltenen Konstanten in die von Ihnen benötigten Parameter und verwenden Sie sie dann wie folgt, um den Standard-RSS-Code auszugeben.
Dieses Programm verwendet den lokalen Umgebungszeichensatz von GBK. Wenn Ihre lokale Umgebung UTF-8 ist, ändern Sie bitte diesen Code LOCAL_CHARSET = 'gbk';
Das Obige stellt die PHP-Generierungsklasse RSS 20 vor, für die eine schnelle Lesegenerierung erforderlich ist, einschließlich unternehmerischer Inhalte. Ich hoffe, dass sie für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn