phpで定型テキストフォーマットを変換して出力。
T
つづみです。
S
ささらです。
ー
タカハシです。
V
MAH01692
S
7月15日 晴れてる。
T
ウキウキすぎて夜にあまり寝付けることができずに朝を迎える。
ー
国道279号やらを使い大間へと進む。
S
夏も本番になってきたのでライダーさんも多く、中にはホムセン箱などを積んだ人もちらほら見かけるように。
V
MAH01693
02045
こんな感じのテキストを特定の文字を改行位置で判断しCeVIOでインポート可能なテキストフォーマットに変換する。
//入力された文章を配列に $text = $_POST['text']; //$text = html_entity_decode($text); $array = explode("\n", $text); // とりあえず行に分割 $array = array_map('trim', $array); // 各行にtrim()をかける $array = array_filter($array, 'strlen'); // 文字数が0の行を取り除く $array = array_values($array); // これはキーを連番に振りなおしてるだけ //print_r($array); //キーの整理と配列の作成 $result = array(); $i = 0; $s = 0; //初期構文チェック if(!$array){ echo "配列がないよ。"; return; }else if( !is_array($array) ){ echo "から情報"; return; }else if( !preg_match('/^[STIO\-ー]*$/',$array[0] ) ){ echo "コピペ箇所間違ってない?"; return; } //配列の構造変更 foreach($array as $texts){ //全角ハイフン if( preg_match('/^(S|T|O|I|ー|\-)$/',$texts) ){ $text_jamp_flag = false; $result[$i]["name"] = $texts; // print_r($text_result); $i++; }else if( preg_match('/^[STIO\-ー]*$/',$texts) ){ $text_jamp_flag = false; //print_r(preg_split("//u", $texts, -1, PREG_SPLIT_NO_EMPTY)); $result[$i]["name"] = preg_split("//u", $texts, -1, PREG_SPLIT_NO_EMPTY); $i++; }else if( preg_match('/^(P|V)$/',$texts) ){ $text_jamp_flag = true; }else{ if(!$text_jamp_flag)$result[$i - 1 ]["text"][] = $texts; } } //print_r($result); function write_name($name){ if($name == "S"){ return "さとうささら"; }else if($name == "T"){ return "すずきつづみ"; }else if($name == "O"){ return "ONE"; }else if($name == "ー" or $name == "-"){ return "タカハシ"; } } foreach($result as $result_text){ if(is_array( $result_text["name"]) ){ $_count = count($result_text["name"]); // echo $_count; for($num = 0; $num < $_count; ){ echo write_name($result_text["name"][$num])."\t".$result_text["text"][0]."\n"; $num++; } }else{ $_count = count($result_text["text"]); // echo $_count; for($num = 0; $num < $_count; ){ echo write_name($result_text["name"])."\t".$result_text["text"][$num]."\n"; $num++; } } }
実行すると
T
つづみです。
とかが
すずきつづみ[\t]つづみです。
って具合に変換される。