テーブル記法

中間発表の終わって気が楽になったので気分転換のついでに書いてみた。

,1-1,1-2,1-3
,2-1,2-2,2-3
,3-1,3-2,3-3

<table border="1">
<tr><th>1-1</th><th>1-2</th><th>1-3</th></tr>
<tr><td>2-1</td><td>2-2</td><td>2-3</td></tr>
<tr><td>3-1</td><td>3-2</td><td>3-3</td></tr>
</table>

に変換。

    public function createTable(){
    	
    	$in_table_flag = false;        //テーブル内か?
    	$is_header = true;             //ヘッダか?
    	$text = "";
    	$lines = explode("\n", $this->text);
    	
    	foreach($lines as $line){
    		if(preg_match("/^,/", $line)){
    			if($is_header){
    				$text .= "<table border=\"1\">\n<tr>";
    				$in_table_flag = true;
    				$is_header = false;
    				$elements = explode(",", $line);
    				for($i=1;$i<count($elements);$i++){
    					$text .= "<th>".$elements[$i]."</th>";
    				}
    				$text .= "</tr>\n";
    			}
    			else{
    				$text .= "<tr>";
    				$elements = explode(",", $line);
    				for($i=1;$i<count($elements);$i++){
    					$text .= "<td>".$elements[$i]."</td>";
    				}
    				$text .= "</tr>\n";
    			}
    		}
    		else{
		        if($in_table_flag){
				$text .= "</table>";
			}
    			$in_table_flag = false;
    			$is_header     = true;
    			$text .= $line."\n";
    		}
    	}
    	$this->text = $text;
    }

よく考えないで書いたのであまり綺麗なコードになってないから後々磨いていこ。


あ, ところで,


はてなTシャツ欲しい!