ねごとめも背景

ねごとめも

数学、電気の勉強始めました!プログラムにも挑戦しています!|ω・)ノ


作成したプログラムは、こちらでも公開しています。
よかったら覗いてみてください。_( _´ω`)_
→ javascript,SVG で作成したプログラム置き場

PHP csv ファイルアップロードテスト(1)

今回は PHPを利用した csv ファイルのアップロードテスト。
参考にさせていただいたサイト。
■ [PHP] ファイルアップロードの上限サイズを変更する際にさわるディレクティブまとめ
■ ファイルのアップロード
■ PHP5 HTML フォームでアップロードファイルサイズの制限
■ テストサイト → PHP を利用した csv ファイルアップロードテスト(1)

プログラムの流れ

  1. 選択ボタンで csv ファイルを選択
  2. upload ボタンで csv ファイルをサーバーへアップロード
  3. アップロードされた csv ファイルを fgetcsv 関数を使用して配列として取得。
  4. 取得した配列の値から HTML の table タグを使用して表を出力。
  5. アップロードした csv ファイルは HTML タグ出力後削除。

■ プログラム実行結果

csv アップロードテスト実行結果

プログラムの制限と注意事項

  1. アップロードできるファイルサイズの上限は 100KB
  2. 上限を超えたファイルをアップロードするとエラー表示。
  3. csv ファイルの区切りはカンマのみ
  4. 取得した配列の値から HTML の table タグを使用して表を出力。

csv ファイルのアップロードサイズの上限は .htaccess で設定。
.htaccess ファイルへ次の二行を追加。
php_value post_max_size 100000bytes
php_value upload_max_filesize 100000bytes
上記、二行を追加してアップローロファイルへ上限の設定は出来けど、
ローカル( xampp ) で上限を超えたファイルをアップロードした場合にエラーが出力される。
このエラーを回避するの方法がわからない。

■ Warning


Warning: POST Content-Length of 307042 bytes exceeds the limit of 100000 bytes in Unknown on line 0

■ upload.php


<?php
	function putFile()
	{
		$fileName="";
		$message="";
		if(is_uploaded_file(@$_FILES["uploadFile"]["tmp_name"]))
		{
			$uploadFile=$_FILES["uploadFile"]["name"];
			$check=explode(".",$uploadFile);
			if(count($check)==2&&$check[count($check)-1]=="csv")
			{
				$fileName="tmp/".$uploadFile;
				if(move_uploaded_file($_FILES["uploadFile"]["tmp_name"],$fileName))
				{
					chmod($fileName,0644);
				}
				else
				{
					$message="ファイルアップロードに失敗しました";
				}
			}
			else
			{
				$message="拡張子が csv 以外の可能性があります。";
			}
		}
		else
		{
			$message="ファイルサイズが 100KB より大きいファイルの選択、<br>又はファイルが選択されていない可能性があります。";
		}
		return array("fileName"=>$fileName,"message"=>$message);
	}
	$result=putFile();
	if($result["message"]=="")
	{
		$fp=fopen($result["fileName"],"r");
		if($fp)
		{
			if(flock($fp,LOCK_EX))
			{
				$table="<table style=\"background-color:#333;width:auto;height:auto;\"><tbody>";
				while($line=fgetcsv($fp))
				{
					$table.="<tr>";
					for($i=0;$i<count($line);$i++)
					{
						$str=htmlspecialchars(trim($line[$i]),ENT_QUOTES);
						$str=str_replace(array("\r\n","\n"),"<br>",$str);
						$table.="<td style=\"vertical-align:top;padding:1px;background-color:#fff;\"><p style=\"white-space:nowrap;width:auto;height:auto;\">".$str."</p></td>";
					}
					$table.="</tr>";
				}
				$table.="</tbody></table>";
				echo($table);
				flock($fp,LOCK_UN);
			}
			fclose($fp);
			if(file_exists($result["fileName"]))
			{
				unlink($result["fileName"]);
			}
		}
	}
	else
	{
		echo("<p>".$result["message"]."</p>\n");
	}
?>
2013/05/21 [01:23]
  • category : php,
  • comment : 0

PHP Yahoo 急上昇ワード取得テスト(1)

今回は yahoo の急上昇ワード デイリーの取得テスト。
テストサイト → 急上昇ワード デイリー - Yahoo!検索データ取得テスト(1)
前回やった google 急上昇ワードは、 simplexml_load_file 関数と、
simple_load_string を使用して xml ファイルの値を取得。
今回は、同じく xml 値をツリー化して取得出来る new DomDocument クラス?を使用して、
xml 値の取得テスト。
yahoo の急上昇ワードデイリーのは "http://searchranking.yahoo.co.jp/rss/burst_ranking-rss.xml"
xml 形式で格納されてる。
new DomDocument の load 関数で xml をツリー化して値を格納。
あとは、 getElementsByTagName 関数でタグに格納されている値を取得。


<?php
	$url="http://searchranking.yahoo.co.jp/rss/burst_ranking-rss.xml";
	$doc=new DomDocument;
	$flg=@$doc->load($url);
	if($flg)
	{
		$root=$doc->documentElement;
		$channel=$root->getElementsByTagName("channel")->item(0);
		$title=$channel->getElementsByTagName("title")->item(0)->firstChild->nodeValue;
		$link=$channel->getElementsByTagName("link")->item(0)->firstChild->nodeValue;
		$lastBuildDate=$channel->getElementsByTagName("lastBuildDate")->item(0)->firstChild->nodeValue;
		$flg=preg_match("/[a-zA-Z]+, [0-9]+ [a-zA-Z]+ [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}/",$lastBuildDate,$match);
		echo("<div id=\"caption\">");
		echo("<a href=\"".$link."\" target=\"_top\">".$title."</a><br>");
		echo("<span style=\"font-size:80%\">lastBuildDate:[ ".$match[0]." ]</span>");
		echo("</div>");
		$items=$channel->getElementsByTagName("item");
		echo("<ol>\n");
		for($i=0;$i<$items->length;$i++)
		{
			$item=$items->item($i);
			$title=$item->getElementsByTagName("title")->item(0)->firstChild->nodeValue;
			$href=$item->getElementsByTagName("link")->item(0)->firstChild->nodeValue;
			$description=$item->getElementsByTagName("description")->item(0)->firstChild->nodeValue;
			echo("<li>[ ".$description." ]<br><a href=\"".$href."\" target=\"_top\">".$title."</a></li>\n");
		}
		echo("</ol>\n");
	}
	unset($doc);
?>

■ PHPを利用した Yahoo 急上昇ワード取得

2013/05/18 [23:07]
  • category : php,
  • comment : 0

カウンター

プロフィール

negotoy

Author:negotoy
電気の勉強始めました!
テキストエディタを使ってプログラミングに挑戦中。fc2 ブログに公開しているテンプレート等は、自由にカスタマイズして、ご活用ください。プログラム実行の前に必ずコードの確認をお願いします。

最新記事

カテゴリ

カレンダー

04 | 2013/05 | 06
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -


PAGE TOP
広告: