• HOME
  • Diary
  • phpで定型テキストフォーマットを変換して出力。

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]つづみです。
って具合に変換される。