php生成RSS订阅的方法


Posted in PHP onFebruary 13, 2015

本文实例讲述了php生成RSS订阅的方法。分享给大家供大家参考。具体分析如下:

RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其实这三个解释都是指同一种Syndication的技术。RSS目前广泛用于网上新闻频道,blog和wiki。使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
从技术上来说一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀,下面是一段 rss 文件的内容示例:

<?xml version="1.0" encoding="utf-8"?> 

<rss version="2.0"> 

<channel> 

<title>三水点靠木</title> 

<link>https://3water.com/</link> 

<description>三水点靠木</description> 

<item> 

<title>RSS Tutorial</title> 

<link>网站地址/rss</link> 

<description>New RSS tutorial on W3School</description> 

</item> 

<item> 

<title>XML Tutorial</title> 

<link>网站地址/xml</link> 

<description>New XML tutorial on W3School</description> 

</item> 

</channel> 

</rss>

下面分享一段使用 php 动态生成 RSS 的代码示例:

<?php 

/** 

** php 动态生成 RSS 类 

**/ 

define("TIME_ZONE",""); 

define("FEEDCREATOR_VERSION","3water.com");//您的网址 

class FeedItem extends HtmlDescribable{ 

    var $title,$description,$link; 

    var $author,$authorEmail,$image,$category,$comments,$guid,$source,$creator;

    var $date;

    var $additionalElements=Array(); 

} 

 

class FeedImage extends HtmlDescribable{ 

    var $title,$url,$link; 

    var $width,$height,$description; 

} 

 

class HtmlDescribable{ 

    var $descriptionHtmlSyndicated; 

    var $descriptionTruncSize; 

 

    function getDescription(){ 

        $descriptionField=new FeedHtmlField($this->description); 

        $descriptionField->syndicateHtml=$this->descriptionHtmlSyndicated;

        $descriptionField->truncSize=$this->descriptionTruncSize;

        return $descriptionField->output(); 

    } 

} 

 

class FeedHtmlField{ 

    var $rawFieldContent; 

    var $truncSize,$syndicateHtml; 

    function FeedHtmlField($parFieldContent){ 

        if($parFieldContent){ 

            $this->rawFieldContent=$parFieldContent; 

        } 

    } 

    function output(){ 

        if(!$this->rawFieldContent){ 

            $result=""; 

        }    elseif($this->syndicateHtml){ 

            $result="<![CDATA[".$this->rawFieldContent."]]>"; 

        }else{ 

            if($this->truncSize and is_int($this->truncSize)){ 

                $result=FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);

            }else{ 

                $result=htmlspecialchars($this->rawFieldContent); 

            } 

        } 

        return $result; 

    } 

} 

 

class UniversalFeedCreator extends FeedCreator{ 

    var $_feed; 

    function _setFormat($format){ 

        switch (strtoupper($format)){ 

            case "2.0": 

                // fall through 

            case "RSS2.0": 

                $this->_feed=new RSSCreator20(); 

                break; 

            case "0.91": 

                // fall through 

            case "RSS0.91": 

                $this->_feed=new RSSCreator091(); 

                break; 

            default: 

                $this->_feed=new RSSCreator091(); 

                break; 

        } 

        $vars=get_object_vars($this); 

        foreach ($vars as $key => $value){ 

            // prevent overwriting of properties "contentType","encoding"; do not copy "_feed" itself 

            if(!in_array($key, array("_feed","contentType","encoding"))){ 

                $this->_feed->{$key}=$this->{$key}; 

            } 

        } 

    } 

 

    function createFeed($format="RSS0.91"){ 

        $this->_setFormat($format); 

        return $this->_feed->createFeed(); 

    } 

 

    function saveFeed($format="RSS0.91",$filename="",$displayContents=true){ 

        $this->_setFormat($format); 

        $this->_feed->saveFeed($filename,$displayContents); 

    } 

 

    function useCached($format="RSS0.91",$filename="",$timeout=3600){ 

        $this->_setFormat($format); 

        $this->_feed->useCached($filename,$timeout); 

    } 

} 

 

class FeedCreator extends HtmlDescribable{ 

    var $title,$description,$link; 

    var $syndicationURL,$image,$language,$copyright,$pubDate,$lastBuildDate,$editor,$editorEmail,$webmaster,$category,$docs,$ttl,$rating,$skipHours,$skipDays;

    var $xslStyleSheet=""; 

    var $items=Array(); 

    var $contentType="application/xml"; 

    var $encoding="utf-8"; 

    var $additionalElements=Array(); 

 

    function addItem($item){ 

        $this->items[]=$item; 

    } 

 

    function clearItem2Null(){ 

        $this->items=array(); 

    } 

 

    function iTrunc($string,$length){ 

        if(strlen($string)<=$length){ 

            return $string; 

        } 

 

        $pos=strrpos($string,"."); 

        if($pos>=$length-4){ 

            $string=substr($string,0,$length-4); 

            $pos=strrpos($string,"."); 

        } 

        if($pos>=$length*0.4){ 

            return substr($string,0,$pos+1)." ..."; 

        } 

 

        $pos=strrpos($string," "); 

        if($pos>=$length-4){ 

            $string=substr($string,0,$length-4); 

            $pos=strrpos($string," "); 

        } 

        if($pos>=$length*0.4){ 

            return substr($string,0,$pos)." ..."; 

        } 

 

        return substr($string,0,$length-4)." ..."; 

    } 

 

    function _createGeneratorComment(){ 

        return "<!-- generator=\"".FEEDCREATOR_VERSION."\" -->\n"; 

    } 

 

    function _createAdditionalElements($elements,$indentString=""){ 

        $ae=""; 

        if(is_array($elements)){ 

            foreach($elements AS $key => $value){ 

                $ae.= $indentString."<$key>$value</$key>\n"; 

            } 

        } 

        return $ae; 

    } 

 

    function _createStylesheetReferences(){ 

        $xml=""; 

        if($this->cssStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n"; 

        if($this->xslStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n"; 

        return $xml; 

    } 

 

    function createFeed(){} 

 

    function _generateFilename(){ 

        $fileInfo=pathinfo($_SERVER["PHP_SELF"]); 

        return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml"; 

    } 

 

    function _redirect($filename){ 

        Header("Content-Type: ".$this->contentType."; charset=".$this->encoding."; filename=".basename($filename)); 

        Header("Content-Disposition: inline; filename=".basename($filename)); 

        readfile($filename,"r"); 

        die(); 

    } 

 

    function useCached($filename="",$timeout=3600){ 

        $this->_timeout=$timeout; 

        if($filename==""){ 

            $filename=$this->_generateFilename(); 

        } 

        if(file_exists($filename) && (time()-filemtime($filename) < $timeout)){ 

            $this->_redirect($filename); 

        } 

    } 

 

    function saveFeed($filename="",$displayContents=true){ 

        if($filename==""){ 

            $filename=$this->_generateFilename(); 

        } 

        $feedFile=fopen($filename,"w+"); 

        if($feedFile){ 

            fputs($feedFile,$this->createFeed()); 

            fclose($feedFile); 

            if($displayContents){ 

                $this->_redirect($filename); 

            } 

        }else{ 

            echo "<br /><b>Error creating feed file, please check write permissions.</b><br />"; 

        } 

    } 

} 

 

class FeedDate{ 

    var $unix; 

    function FeedDate($dateString=""){ 

        if($dateString=="") $dateString=date("r"); 

        if(is_integer($dateString)){ 

            $this->unix=$dateString; 

            return; 

        } 

        if(preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+)?(\\d{1,2})\\s+([a-zA-Z]{3})\\s+(\\d{4})\\s+(\\d{2}):(\\d{2}):(\\d{2})\\s+(.*)~",$dateString,$matches)){ 

            $months=Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12); 

            $this->unix=mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]); 

            if(substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-'){ 

                $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60; 

            }else{ 

                if(strlen($matches[7])==1){ 

                    $oneHour=3600; 

                    $ord=ord($matches[7]); 

                    if($ord < ord("M")){ 

                        $tzOffset=(ord("A") - $ord - 1) * $oneHour; 

                    } elseif($ord >= ord("M") && $matches[7]!="Z"){ 

                        $tzOffset=($ord - ord("M")) * $oneHour; 

                    } elseif($matches[7]=="Z"){ 

                        $tzOffset=0; 

                    } 

                } 

                switch ($matches[7]){ 

                    case "UT": 

                    case "GMT":    $tzOffset=0; 

                } 

            } 

            $this->unix += $tzOffset; 

            return; 

        } 

        if(preg_match("~(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(.*)~",$dateString,$matches)){ 

            $this->unix=mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]); 

            if(substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-'){ 

                $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60; 

            }else{ 

                if($matches[7]=="Z"){ 

                    $tzOffset=0; 

                } 

            } 

            $this->unix += $tzOffset; 

            return; 

        } 

        $this->unix=0; 

    } 

 

    function rfc822(){ 

        $date=gmdate("Y-m-d H:i:s",$this->unix); 

        if(TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE); 

        return $date; 

    } 

 

    function iso8601(){ 

        $date=gmdate("Y-m-d H:i:s",$this->unix); 

        $date=substr($date,0,22) . ':' . substr($date,-2); 

        if(TIME_ZONE!="") $date=str_replace("+00:00",TIME_ZONE,$date); 

        return $date; 

    } 

 

    function unix(){ 

        return $this->unix; 

    } 

} 

 

class RSSCreator10 extends FeedCreator{ 

    function createFeed(){ 

        $feed="<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; 

        $feed.= $this->_createGeneratorComment(); 

        if($this->cssStyleSheet==""){ 

            $cssStyleSheet="http://www.w3.org/2000/08/w3c-synd/style.css"; 

        } 

        $feed.= $this->_createStylesheetReferences(); 

        $feed.= "<rdf:RDF\n"; 

        $feed.= "    xmlns=\"http://purl.org/rss/1.0/\"\n"; 

        $feed.= "    xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"; 

        $feed.= "    xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n"; 

        $feed.= "    xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n"; 

        $feed.= "    <channel rdf:about=\"".$this->syndicationURL."\">\n"; 

        $feed.= "        <title>".htmlspecialchars($this->title)."</title>\n"; 

        $feed.= "        <description>".htmlspecialchars($this->description)."</description>\n"; 

        $feed.= "        <link>".$this->link."</link>\n"; 

        if($this->image!=null){ 

            $feed.= "        <image rdf:resource=\"".$this->image->url."\" />\n"; 

        } 

        $now=new FeedDate(); 

        $feed.= "       <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n"; 

        $feed.= "        <items>\n"; 

        $feed.= "            <rdf:Seq>\n"; 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "                <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; 

        } 

        $feed.= "            </rdf:Seq>\n"; 

        $feed.= "        </items>\n"; 

        $feed.= "    </channel>\n"; 

        if($this->image!=null){ 

            $feed.= "    <image rdf:about=\"".$this->image->url."\">\n"; 

            $feed.= "        <title>".$this->image->title."</title>\n"; 

            $feed.= "        <link>".$this->image->link."</link>\n"; 

            $feed.= "        <url>".$this->image->url."</url>\n"; 

            $feed.= "    </image>\n"; 

        } 

        $feed.= $this->_createAdditionalElements($this->additionalElements,"    "); 

 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "    <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n"; 

            //$feed.= "        <dc:type>Posting</dc:type>\n"; 

            $feed.= "        <dc:format>text/html</dc:format>\n"; 

            if($this->items[$i]->date!=null){ 

                $itemDate=new FeedDate($this->items[$i]->date); 

                $feed.= "        <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n"; 

            } 

            if($this->items[$i]->source!=""){ 

                $feed.= "        <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n"; 

            } 

            if($this->items[$i]->author!=""){ 

                $feed.= "        <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n"; 

            } 

            $feed.= "        <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r","  ")))."</title>\n"; 

            $feed.= "        <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; 

            $feed.= "        <description>".htmlspecialchars($this->items[$i]->description)."</description>\n"; 

            $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements,"        "); 

            $feed.= "    </item>\n"; 

        } 

        $feed.= "</rdf:RDF>\n"; 

        return $feed; 

    } 

} 

 

class RSSCreator091 extends FeedCreator{ 

    var $RSSVersion; 

 

    function RSSCreator091(){ 

        $this->_setRSSVersion("0.91"); 

        $this->contentType="application/rss+xml"; 

    } 

 

    function _setRSSVersion($version){ 

        $this->RSSVersion=$version; 

    } 

 

    function createFeed(){ 

        $feed="<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; 

        $feed.= $this->_createGeneratorComment(); 

        $feed.= $this->_createStylesheetReferences(); 

        $feed.= "<rss version=\"".$this->RSSVersion."\">\n"; 

        $feed.= "    <channel>\n"; 

        $feed.= "        <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n"; 

        $this->descriptionTruncSize=500; 

        $feed.= "        <description>".$this->getDescription()."</description>\n"; 

        $feed.= "        <link>".$this->link."</link>\n"; 

        $now=new FeedDate(); 

        $feed.= "        <lastBuildDate>".htmlspecialchars($now->rfc822())."</lastBuildDate>\n"; 

        $feed.= "        <generator>".FEEDCREATOR_VERSION."</generator>\n"; 

 

        if($this->image!=null){ 

            $feed.= "        <image>\n"; 

            $feed.= "            <url>".$this->image->url."</url>\n"; 

            $feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n"; 

            $feed.= "            <link>".$this->image->link."</link>\n"; 

            if($this->image->width!=""){ 

                $feed.= "            <width>".$this->image->width."</width>\n"; 

            } 

            if($this->image->height!=""){ 

                $feed.= "            <height>".$this->image->height."</height>\n"; 

            } 

            if($this->image->description!=""){ 

                $feed.= "            <description>".$this->image->getDescription()."</description>\n"; 

            } 

            $feed.= "        </image>\n"; 

        } 

        if($this->language!=""){ 

            $feed.= "        <language>".$this->language."</language>\n"; 

        } 

        if($this->copyright!=""){ 

            $feed.= "        <copyright>".FeedCreator::iTrunc(htmlspecialchars($this->copyright),100)."</copyright>\n"; 

        } 

        if($this->editor!=""){ 

            $feed.= "        <managingEditor>".FeedCreator::iTrunc(htmlspecialchars($this->editor),100)."</managingEditor>\n"; 

        } 

        if($this->webmaster!=""){ 

            $feed.= "        <webMaster>".FeedCreator::iTrunc(htmlspecialchars($this->webmaster),100)."</webMaster>\n"; 

        } 

        if($this->pubDate!=""){ 

            $pubDate=new FeedDate($this->pubDate); 

            $feed.= "        <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n"; 

        } 

        if($this->category!=""){ 

            $feed.= "        <category>".htmlspecialchars($this->category)."</category>\n"; 

        } 

        if($this->docs!=""){ 

            $feed.= "        <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs),500)."</docs>\n"; 

        } 

        if($this->ttl!=""){ 

            $feed.= "        <ttl>".htmlspecialchars($this->ttl)."</ttl>\n"; 

        } 

        if($this->rating!=""){ 

            $feed.= "        <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating),500)."</rating>\n"; 

        } 

        if($this->skipHours!=""){ 

            $feed.= "        <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n"; 

        } 

        if($this->skipDays!=""){ 

            $feed.= "        <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n"; 

        } 

        $feed.= $this->_createAdditionalElements($this->additionalElements,"    "); 

 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "        <item>\n"; 

            $feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n"; 

            $feed.= "            <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; 

            $feed.= "            <description>".$this->items[$i]->getDescription()."</description>\n"; 

 

            if($this->items[$i]->author!=""){ 

                $feed.= "            <author>".htmlspecialchars($this->items[$i]->author)."</author>\n"; 

            } 

            /* 

             // on hold 

             if($this->items[$i]->source!=""){ 

             $feed.= "            <source>".htmlspecialchars($this->items[$i]->source)."</source>\n"; 

             } 

             */ 

            if($this->items[$i]->category!=""){ 

                $feed.= "            <category>".htmlspecialchars($this->items[$i]->category)."</category>\n"; 

            } 

            if($this->items[$i]->comments!=""){ 

                $feed.= "            <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n"; 

            } 

            if($this->items[$i]->date!=""){ 

                $itemDate=new FeedDate($this->items[$i]->date); 

                $feed.= "            <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n"; 

            } 

            if($this->items[$i]->guid!=""){ 

                $feed.= "            <guid>".htmlspecialchars($this->items[$i]->guid)."</guid>\n"; 

            } 

            $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements,"        "); 

            $feed.= "        </item>\n"; 

        } 

        $feed.= "    </channel>\n"; 

        $feed.= "</rss>\n"; 

        return $feed; 

    } 

} 

 

class RSSCreator20 extends RSSCreator091{ 

 

    function RSSCreator20(){ 

        parent::_setRSSVersion("2.0"); 

    } 

}

使用示例:
<?php 

header('Content-Type:text/html; charset=utf-8'); 

$db=mysql_connect('127.0.0.1','root','123456'); 

mysql_query("set names utf8"); 

mysql_select_db('dbname',$db); 

$brs=mysql_query('select * from article order by add_time desc limit 0,10',$db); 

$rss=new UniversalFeedCreator(); 

$rss->title="页面标题"; 

$rss->link="网址http://"; 

$rss->description="rss标题"; 

while($rowbrs=mysql_fetch_array($brs)){ 

    $item=new FeedItem(); 

    $item->title =$rowbrs['subject']; 

    $item->link='https://3water.com/'; 

    $item->description =$rowbrs['description']; 

    $rss->addItem($item); 

} 

mysql_close($db); 

$rss->saveFeed("RSS2.0","rss.xml");

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
ajax php 实现写入数据库
Sep 02 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
flash用php连接数据库的代码
Apr 21 PHP
优化PHP代码技巧的小结
Jun 02 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
linux下实现定时执行php脚本
Feb 13 #PHP
浅谈php自定义错误日志
Feb 13 #PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 #PHP
php制作动态随机验证码
Feb 12 #PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 #PHP
php模拟post提交数据的方法
Feb 12 #PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 #PHP
You might like
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
第五章 php数组操作
2011/12/30 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
JS版网站风格切换实例代码
2008/10/06 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
python随机数分布random测试
2018/08/27 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
土建施工员岗位职责
2014/07/16 职场文书
诚信教育主题班会
2015/08/13 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
pandas中关于apply+lambda的应用
2022/02/28 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记