あなたの「必」の書き順を教えてください

混乱してしまっています。初心者です。
前回もPHPでの上書き方法をご教授いただいたのにごめんなさい。

PHPを使って、RSSを更新していくフォームを作成しております。
「入力した内容をPOSTでうけとって、xmlファイルにwで書き込む」
としましたら、最新の項目はでますが、履歴がきえます。もちろんです。

RSSでタグを書いていくとき更新情報は<item></item>にはいりますが、
その上にも下にもスクリプトがありますよね。<item></item>だけかきこんでいくというというのは
どういった命令をしていけばいいのですか?

お昼からずっと考えて、かなりまいっています。
お答えくださる方々にはとるにたらないような初歩的は質問かと存じますが、どうかご教授ください。
よろしくお願いします。


↓「きえるRSSのなりそこない」
<!doctype html>
<html>
<head>
<meta charset="jis" >
<title>RSS登録</title>
<body>
<?php
$title=$_POST["title"];
$text=$_POST["text"];
$url=$_POST["url"];
$rss='
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>●●●</title>
<link>●●.com</link>
<description>最新の●●です</description>
<lastBuildDate>Tue, 30 Jul 2013 22:32:44+0900</lastBuildDate>
<item><title>'.$title.'</title><link>'.$url.'</link><description>'.$text.'</description></item>
</channel>
</rss>
';

$f=fopen("rss.xml","w");
fputs($f,$rss);
fclose($f);
?>
</body>
</html>

A 回答 (2件)

PHPにはSimpleXMLが実装されているのでそれを利用しない手はないでしょう。


エンコーディングはUTF-8を利用し、encoding="UTF-8" をつけるのを忘れないでください。
さすがに「jis」はあり得ないでしょう。

<?php

$rss_base = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>●●●</title>
<link>●●.com</link>
<description>最新の●●です</description>
<lastBuildDate>Tue, 30 Jul 2013 22:32:44+0900</lastBuildDate>
</channel>
</rss>
EOD;

$xml = simplexml_load_string($rss_base);
$channel = $xml->channel;

$item = $channel->addChild('item');
$item->addChild('title', 'タイトル1');
$item->addChild('link', 'リンク1');
$item->addChild('description', '説明1');

$item = $channel->addChild('item');
$item->addChild('title', 'タイトル2');
$item->addChild('link', 'リンク2');
$item->addChild('description', '説明2');

// 普通に表示
// echo $xml->asXML();

// 整形して表示する場合(php_tidy.dllを有効にしておく必要がある)
echo tidy_repair_string($xml->asXML(), array(
'input-xml' => true,
'output-xml' => true,
'input-encoding' => 'utf8',
'output-encoding' => 'utf8',
'indent' => true,
));


こんな感じで整形されます。
http://puu.sh/3PvBk.png
    • good
    • 0
この回答へのお礼

おはようございます。
今回もありがとうございました・・・。
尊敬です。
質問投稿したあと、JISはあかんて!!と気づくまでが精いっぱいでした。
今回もphp_tidy.dllは初めましてです。
まだまだPHPのお勉強が必要だと痛感しているのですが、どのようにアプローチしていっていいかなやんでいます。
もしよければこの本いいよ!!というおすすめの入門書がありましたら教えていただけませんか??

お礼日時:2013/07/31 08:12

(あんまりブログ記事のせるのはよろしくないけど)


こちらでまとめているのでよければご覧ください。
http://bloggdgd.blog28.fc2.com/blog-entry-282.html

「パーフェクトPHP」は超オススメです。
若干著者のコーディング癖が出てるので、「ん??」って思ったところはスルーしてもらって構いません。

【例】 if (isset($_POST['hoge']) === true) { }

私だったら冗長に思うので

if (isset($_POST['hoge'])) { }

で済ませちゃうかなぁ

とか。
    • good
    • 0
この回答へのお礼

無理なお願いをしてごめんなさい。
でも本当にたすかります。
ご近所さんらしい?ということで甘えてしまいました。
ブログも拝見していきます!
ありがとうございました!

お礼日時:2013/08/01 11:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報