ホームページ  >  記事  >  バックエンド開発  >  【独自】家を探しやすくするためにsohu focusのrssを全文に変更

【独自】家を探しやすくするためにsohu focusのrssを全文に変更

WBOY
WBOYオリジナル
2016-06-13 13:17:43742ブラウズ

【原文】家探しをしやすくするため、捜狐フォーカスのRSSを全文に変更しました
近々家の値段が上がりそうな私と妻。は家探しを担当していますが、彼女のクソ会社はインターネットにアクセスできないので、iPad に RSS をロードしてオフラインで読む必要がありました。その結果、Sohu Focus RSS は非全文 RSS でした。妻が家を見つけやすくするために、全文 RSS を生成するコードを書きました。これを機会に、私の生活を改善するためにコードを試してみたいと思います。コード。

PHP コード
<!--

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

-->
<?php
header("コンテンツタイプ: text/html; charset=utf-8");
ini_set("最大実行時間" ,3600);
$url = "http://sz.focus.cn/common/xml/rss/news/hot.php";

$newItemArr = parseItems( $url );
$xmlItemContent = makeRssItemString( $newItemArr ); //アイテムのコンテンツを再生成し、説明をダウンロードしたコンテンツに置き換えます。

//RSS XML の先頭文字列と末尾文字列
$xmlPre = '
<?xml バージョン="1.0" エンコーディング="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 バージョン = "2.0"
xmlns:focus="http://house.focus.cn"
xmlns:F="http://house.focus.cn"
docType="rss"
F:docType="rss"
>
<チャンネル
ページインデックス=""
ページサイズ = "20"
レコードカウント=""
F:pageIndex=""
F:ページサイズ="20"
F:recordCount="">
<イメージ>
<title><![CDATA[ホットニュース-捜湖焦点網深セン局]]></title>
<link>http://sz.focus.cn/newscenter/xwsy.html</link>
<url>http://images.house.focus.cn/img/newhouselogo.gif</url>
</画像>
<title>ホットニュース-捜湖フォーカスネットワーク深センステーション</title>
<link>http://sz.focus.cn/newscenter/xwsy.html</link>
<description><![CDATA[最も包括的かつタイムリーな中国の不動産ニュースと情報を提供します]]></description>
<copyright>Copyright 2012、sohu.com Inc.、全著作権所有</copyright>
<言語>zh-cn</言語>
<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 。 $xmlAppend 。
エコー $xmlOutput;


/*** @param $url
 * @return 配列 itemObj*/
関数 parseItems( $url )
{
    $xmlObj = simplexml_load_file( $url );
    $items = $xmlObj -> チャネル -> アイテム;

    $resultArr = 配列();

    foreach( $items として $item ):
        $resultArr []= makeRssItemObj( $item );
    エンドフォーリーチ;

    $resultArr を返します。
}



/*** @param $item
 * @return itemObj*/
関数 makeRssItemObj( $item )
{
 // $item->link = "demo.html";
    $urlContent = fileGetContent( $item->link ); //curl がサポートされていない場合は、file_get_content またはソケット接続を使用します。

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

   // $content = iconv("gb2312" , "utf-8" , $content);
    preg_match("/id="ニュースコンテンツ">([dD]+)<divs+class="clear">/iU" , $urlContent , $matchArr);

    $item->description = $matchArr[1];
    $item を返します。
}

/*** @param $itemObjArr
 * @戻り文字列*/
関数 makeRssItemString( $itemObjArr )
{
   $result = "";

   foreach( $itemObjArr as $itemObj ):
       $result .= "";
           $result .= "<title><![CDATA[ $itemObj->title ]]></title>";
           $result .= "<link>$ite​​mObj->link</link>";
           $result .= "<description><![CDATA[ $itemObj->description ]]></description>";
           $result .= "<author>mu_rain</author>";
           $result .= "<pubDate>$ite​​mObj->pubDate</pubDate>";
       $result .= "<アイテム>";
   エンドフォーリーチ;
    $result を返します。
}// ------------------------------------
/*** 文字列、オブジェクト、または JSON を定期的に表示します。
 ※標準化された表示
 *
 * @param $str オブジェクト インスタンス
 * @パッケージP
 * @subpackage 文字列
 * @category Putils
 * @作者mu_rain
 * @return 混合*/
// ------------------------------------
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 5px 5px 5px; -moz-box-shadow:0px 0px 10px rgba(00,00,00,0.45);境界線: 3 ピクセルの透明な実線。パディング:3px;マージントップ:20px; "><凡例スタイル="カラー: #069;マージン:3px; $widthStr ">$title</legend>";
    echo "<div style = '-moz-border-radius:10px 10px 10px 10px;font-size:14px; color:#069; border:1pxソリッド #F0FAF9; font-size:9pt; 背景:#F0FAF9; パディング:5px;'>";
    print("<pre class="brush:php;toolbar:false">");
    if($type == 'json') {
        $array = json_decode($array);
    }
    print_r($array);
    print("
"); echo "
"; echo ""; } // ------------------------------------ /*** * URLContentを取得するにはcurlを使用します * @パッケージKDG * @サブパッケージ共通 * @category mu_rain * @author 徐兴*/ // ------------------------------------ 関数 fileGetContent($url) { $ch =curl_init(); $タイムアウト = 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 = トリム(curl_exec($ch)); カール_クローズ($ch); $content を返します。 }
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。