Maison >développement back-end >tutoriel php > [原创]替找房方便 ,将sohu焦点的 rss 改成全文的

[原创]替找房方便 ,将sohu焦点的 rss 改成全文的

WBOY
WBOYoriginal
2016-06-13 13:17:43761parcourir

[原创]为找房方便 ,将sohu焦点的 rss 改成全文的.
房价貌似快要涨了,俺最近天天加班,俺媳妇来负责找房源,可她那狗屎公司无法上网,只好用ipad 加载rss 离线看,结果狗屎sohu焦点的rss 非全文rss ,为了老婆找房方便,写了点代码,用于生成全文的rss. 希望借此机会,尝试一下代码改善生活的感觉. 不废话吧,直接贴代码了.

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php header("Content-type: text/html; charset=utf-8");
ini_set("max_excution_time"  ,3600);
$url = "http://sz.focus.cn/common/xml/rss/news/hot.php";

$newItemArr = parseItems( $url );
$xmlItemContent = makeRssItemString( $newItemArr ); //重新生成item 内容,将下载内容替换descript.

//rss xml 的头尾字符串
$xmlPre = '
<?xml version="1.0" encoding="GBK"?>
<?xml-stylesheet type="text/xsl" href="/common/xml/xsl/rss.xsl" media="all"?>
<?xml-stylesheet type="text/css" href="/common/xml/css/rss.css" media="all"?>

<rss version="2.0" xmlns:focus="http://house.focus.cn" xmlns:f="http://house.focus.cn" doctype="rss" f:doctype="rss">
<channel pageindex="" pagesize="20" recordcount="" f:pageindex="" f:pagesize="20" f:recordcount="">
<image>
<title></title>
<link>http://sz.focus.cn/newscenter/xwsy.html
<url>http://images.house.focus.cn/img/newhouselogo.gif</url>
</image>
<title>热点新闻-搜狐焦点网深圳站</title>
<link>http://sz.focus.cn/newscenter/xwsy.html
<description></description>
<copyright>Copyright 2012, sohu.com Inc., all rights reserved</copyright>
<language>zh-cn</language>
<lastbuilddate>Mon, 02 Jul 2012 21:44:21 +0800</lastbuilddate>
<pubdate>Mon, 02 Jul 2012 21:44:21 +0800</pubdate>
<category>地产综合</category>
<ttl>30</ttl>';
$xmlAppend = '</channel></rss>';


$xmlOutput = $xmlPre . $xmlItemContent . $xmlAppend ;
echo $xmlOutput;


/**
 * @param $url
 * @return array itemObj
 */
function parseItems( $url )
{
    $xmlObj = simplexml_load_file( $url );
    $items = $xmlObj -> channel -> item;

    $resultArr = array();

    foreach( $items as  $item ):
        $resultArr []= makeRssItemObj( $item );
    endforeach;

    return $resultArr;
}



/**
 * @param $item
 * @return itemObj
 */
function makeRssItemObj( $item )
{
 //   $item->link = "demo.html";
    $urlContent = fileGetContent( $item->link );  //如果不支持curl 就用file_get_content 或者socket 连接来实现.

    $urlContent = @iconv("gb2312","utf-8",$urlContent);

   // $content = iconv("gb2312" , "utf-8" , $content);
    preg_match("/id=\"newscontent\">([\d\D]+)<div>/iU" , $urlContent , $matchArr);

    $item->description = $matchArr[1];
    return $item;
}

/**
 * @param $itemObjArr
 * @return string
 */
function makeRssItemString( $itemObjArr )
{
   $result = "";

   foreach( $itemObjArr as $itemObj  ):
       $result .= "<item>";
           $result .= "<title>title ]]></title>";
           $result .= "<link>$itemObj->link";
           $result .= "<description>description ]]></description>";
           $result .= "<author>mu_rain</author>";
           $result .= "<pubdate>$itemObj->pubDate</pubdate>";
       $result .= "<item>";
   endforeach;
    return  $result;
}


// ------------------------------------
/**
 * regulary show the string or object or json.
 * 规格化显示
 *
 * @param  $str    对象的实例
 * @package        P
 * @subpackage    String
 * @category    Putils
 * @author        mu_rain
 *  @return mixed
 */
// ------------------------------------
function pr($array,$title = 'DEBUG',$type = 'array' , $width = '')    {
    $title .= date("Y-m-d H:i:s");
    $widthStr = "";
    if( $width) $widthStr = "width:$width"."px";

    echo "<fieldset style='\"-moz-border-radius:5px' rgba border: solid transparent padding:3px margin-top:20px>
<legend style='\"color:' margin:3px>$title</legend>";
    echo "<div style="-moz-border-radius:10px 10px 10px 10px;font-size:14px; color:#069; border:1px solid #F0FAF9;  font-size:9pt; background:#F0FAF9; padding:5px;">";
    print("<pre class="brush:php;toolbar:false">");
    if($type == 'json') {
        $array = json_decode($array);
    }
    print_r($array);
    print("
"); echo "
"; echo ""; } // ------------------------------------ /** * * get the urlContent use curl * @package KDG * @subpackage common * @category mu_rain * @author 徐兴 */ // ------------------------------------ function fileGetContent($url) { $ch = curl_init(); $timeout = 30; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $contents = trim(curl_exec($ch)); curl_close($ch); return $contents; }
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent: php绘制中文的乱码有关问题 Article suivant: phpMyAdmin 3.4.5报他妈的session异常

Articles Liés

Voir plus