開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語、スクリプト言語)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の11章(XMLのパースと生成)11.4(演習問題)2を解いてみる。
2.
HTML、PHPのソースコード(BBEdit)
<?php require 'formhelpers.php'; if(array_key_exists('_submit_check', $_POST)){ if($errors=validate_form()){ show_form($errors); } else { process_form(); } } else { show_form(); } function show_form($errors=''){ if($errors){ print 'エラー<ul><li>'; print implode('</li><li>', $errors); print '</li></ul>'; } $defaults = array(); if(array_key_exists('_submit_check', $_POST)){ $defaults = $_POST; } print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '" >'; print 'RSSアイテムを入力'; print '<br />タイトル: '; input_text('feed_title', $_POST); print '<br />リンク: '; input_text('feed_link', $_POST); print '<br />説明文<br />'; input_textarea('feed_description', $_POST); print '<br />'; input_submit('submit', 'submit'); print '<input type="hidden" name="_submit_check" value="1" />'; print '</form>'; } function validate_form(){ $errors = array(); if(!strlen(trim($_POST['feed_title']))){ $errors[] = "タイトルを入力してください"; } if(!strlen(trim($_POST['feed_link']))){ $errors[] = "リンクを入力してください"; } elseif(substr(trim($_POST['feed_link']), 0, 7) != 'http://' && substr(trim($_POST['feed_link']), 0, 8) != 'https://') { $errors[] = 'リンクが「http://」または「https://」で始まっているかを確認してください'; $errors[] = substr(trim($_POST['feed_link']), 0, 8); } if(!strlen(trim($_POST['feed_description']))){ $errors[] = "説明文を入力してください"; } return $errors; } function process_form(){ header('Content-Type: text/xml'); print <<<_XML_ <rss version="0.91"> <channel> <title>Kamimura's blog</title> <link>http://sitekamimura.blogspot.com/</link> <description> C, C++, C#, F#, JavaScript, Perl, Python, Ruby, PHP, SQL, R, Haske </description> _XML_; print '<item>'; print '<title>' . htmlentities($_POST['feed_title']) . '</title>'; print '<link>' . htmlentities($_POST['feed_link']) . '</link>'; print '<description>' . htmlentities($_POST['feed_description']) . '</description>'; print '</item>'; print '</channel></rss>'; } ?>
ちなみにJavaScriptの場合。(といっても値を取得して出力してるだけ。)
コード(BBEdit)
var title = $('#feed_title').val(); var link = $('#feed_link').val(); var description = $('#feed_description').val(); var result = "<head>\n" + '<meta http-equiv="Content-Type" content="text/xml; charset=utf-8" />\n' + '</head>\n' + '<rss version="0.91">\n<channel>\n' + '<title>Kamimura\'s blog</title>\n' + '<link>http://sitekamimura.blogspot.com/</link>\n' + '<description>C, C++, C#, F#, JavaScript, Perl, Python, Ruby, PHP, SQL, R, Haske</description>\n' + '<item>\n' + '<title>' + title + '</title>\n' + '<link>' + link + '</link>\n' + '<description>' + description + '</description>\n' + '</item>\n</channel>\n</rss>'; $('#pre0').text(result);RSSアイテムを入力
タイトル:
リンク:
説明文
0 コメント:
コメントを投稿