ホームページ >バックエンド開発 >PHPチュートリアル >PHPは改善のためにRSSファイルを生成します
DOMDocumentコンポーネントを使ってRSSファイルを生成するPHPコードを書いたのですが、膨らみすぎてクラスにカプセル化したかったのですが失敗したので相談にきました なぜ dom を使用するのですか?
生成されたRSSは大体こんな感じです
362dcd0b5acf1d34221ba60cd006fe97
71529ea839aaca7f341f3b6ca5d6594f
be1cdaf6779910b92a0a47fc24e82b4f
2cdf5bf648cf2f33323966d7f58a7f3fhttp://www.xxx.comf2b8b73da751f6a0101d6acb3acd2296 381e40d553cbb1b9f9173fcd3fed0a4eid: 1,user_name:,pass:123,real_name:Wooda11945cc7b2902590ebb81ca9fd0b283
7abeb85dc1be4bd4e5de726ffe765a61
be1cdaf6779910b92a0a47fc24e82b4fee0caf53511b41f7ae14b7f90e5d0620 20f7d4801863f210254598d7e2e31df0c 6a9267821cf92f19311005a752f96fb21103123363706453f9c4b3dc72dfc8a5586ab3b2f1c7c8a07734cb433fcb4854小木5e82a385112cfe0bd9425e8d56ec8f1682e572c0592488450700b47a70c7de63
2cdf5bf648cf2f33323966d7f58a7f3f http:// www.xxx.comf2b8b73da751f6a0101d6acb3acd2296
8b55addfb40ddf4a384b1010d729e503id:2,user_name:,pass:456,real_name:小木a11945cc7b2902590ebb81ca9fd0b283
コードが冗長すぎます
$doc = new DOMDocument('1.0','utf-8');
$doc->formatOutput = true
// タグを作成します
// RSS タグを作成します
$rss = $ doc->createElement('rss')
//チャンネルの下にタグを作成します
$channel ;
$clink => {
- アウト'''''''''-' OUTpsOUTpsmbpsps アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウトアウトdoc->createElement('link');
$idescription = $doc->createElement('description ');
$real_name = $doc- >createElement('real_name');
/*ここでデータベース ループ呼び出しが必要です*/
//コンテンツを作成します
//item の下にラベルのコンテンツを作成します
$ c_ititle = $doc->createTextNode( $val['user_id']);
$c_ilink = $doc->createTextNode('http://www.xxx.com');
$c_idescription = $doc-> ;createTextNode('id:'.$ val['user_id'].',user_name:'.$val['user_name'].',pass:'.$val['pass'].',real_name:'. $val['real_name']);
//ユーザーの下にタグのコンテンツを作成します
$c_user_id = $doc->createTextNode($val['user_id']);
$c_user_name = $doc->createTextNode( $val['user_name']); ;
$c_user_pass = $doc->createTextNode($val['pass']);$c_real_name /属性を作成します
$attributes = $doc->createAttribute('id');
/*ここでデータベース ループ呼び出しが必要です*/
//item第1レベルタグの要素内容が継承される
$ititle->appendChild ($c_ititle);
$ilink->appendChild($c_ilink);
$idescription->appendChild($c_idescription); // ユーザーの第 1 レベルのタグの要素の内容は継承
$user_id->appendChild($c_user_id ; /
// 継承 c $ Channel-& GT; Appendchild ($ item);
// ITEM 1 レベルのラベル継承
$ item- & gt; APPENDCHILD ($ユーザー); タイトル) ;
$item->appendChild($idescription);
$attributes->appendChild($a_id); /7edd63145f632eb0de7727e9758fe856
$item->appendChild($attributes)
// アイテムレベルのタグの継承
$user->appendChild($user_id); ->appendChild(
$c_ctitle = $doc->createTextNode('test rss');
$c_clink = $doc->createTextNode('http://www.xxx.com');
$c_cdescription = $doc->createTextNode ('This is a test rss');
// RSS バージョン属性値を作成
$rss_attribute_c = $doc->createTextNode('2.0'); // RSS バージョン属性を作成
$rss_attribute = $doc- >createAttribute('version');
//Inherit
//チャネルの第 1 レベルのタグの要素の内容が継承されます
$ctitle->appendChild($c_ctitle); clink->appendChild($c_clink);
$cdescription->appendChild($c_cdescription)
$rss_attribute->appendChild($rss_attribute_c);
//Ta gチャンネルの第 1 レベルのタグの継承
$channel->appendChild($clink);
//ルートノードを作成
$rss->appendChild($rss_attribute);
//xml を保存ファイル
$doc->save('hello .xml');
function connect_sql(){
$con = mysql_connect('localhost','root','123456') または die('mysql エラー :' .mysql_error());
mysql_select_db('test ');
mysql_query('set names utf8');
$sql = "SELECT * FROM test"; sql);
$ content = array();
while($row = mysql_fetch_array($query)){
$content[] = $row; }
方法を教えてくださいそれをクラスに変換してみました、いつもいいえ
ディスカッション (解決策) に返信
なぜ dom を使うのですか?
文字列を直接組み立てることはできないのでしょうか?いいね、いいね、いいね
文字列を直接組み立てることはできないのでしょうか?たとえば、$ar = array( array( 'id' => 1, 'user' => array('user_id' => 1, 'user_name' => '', 'user_pass' => 123, 'real_name' => 'aa'), 'title' => 1, 'link' => 'http://www.xxx.com', 'description' => 'id:1,user_name:,pass:123,real_name:aa', ), array( 'id' => 2, 'user' => array('user_id' => 2, 'user_name' => '', 'user_pass' => 456, 'real_name' => 'bb'), 'title' => 2, 'link' => 'http://www.xxx.com', 'description' => 'id:1,user_name:,pass:456,real_name:bb', ),);
<rss version="2.0"><item id="1"><id>1</id><user user_id="1" user_name="" user_pass="123" real_name="aa"><title>1</title><link>http://www.xxx.com</link><description>id:1,user_name:,pass:123,real_name:aa</description></item><item id="2"><id>2</id><user user_id="2" user_name="" user_pass="456" real_name="bb"><title>2</title><link>http://www.xxx.com</link><description>id:1,user_name:,pass:456,real_name:bb</description></item>
出力を直接エコーし、それを XML ファイルに書き込むのは簡単ですが、PHP には独自の domdocument コンポーネントがあるため、生成されたファイルを直接つなぎ合わせるよりも明らかに利点があると思います。まだわかりません