ねごとめも背景

    ねごとめも



    作成したプログラムは、こちらでも公開しています。
    よかったら覗いてみてください。_(┐「ε:)_
    → javascript,SVG で作成したプログラム置き場
    → プログラム一覧 - (2)

    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
    好きな選手権 :chara選手権
    好きなコーナー :リスナーが凸して
    椎名林檎の丸の内を歌うコーナー

    PC ゲーム歴 :
    モバゲーのタイピングゲームで
    タイピングの練習(サービス終了)
    ニックネーム : クッキー
    以降ゲーム歴なし

    [ YouTube ]

    chara : あいのうた
    椎名林檎 : ありあまる富
    かせきさいだぁ : じゃっ 夏なんで
    阿部真央 : 貴方の恋人になりたいのです

    最新記事

    カテゴリ

    カレンダー

    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
    広告: