TOP ▲ itcore TOP プログラムパーツ

uKeyDataArrayGet KEY+DATAのデータを配列に入れる。最初のセパレータで区切る。同じKEYがあった場合は最後が有効になる。 | itcore 2017年

PHP関数

<?php
include_once "uToLF.func";

// KEY+DATAのデータを配列に入れる。最初のセパレータで区切る。同じKEYがあった場合は最後が有効になる。
function uKeyDataArrayGet($sep, $data) {
  $data2 = uToLF($data); // 改行コードをLFにする。
  $a_line = explode("\n", $data2); // 行の配列
  $a_KeyData = array(); // 返す配列
  foreach ($a_line as $line) {
    if ("" == trim($line)) continue; // 空行は無視
    $pos = strpos($line, $sep); // 最初のセパレータで区切る。
    if (0 === $pos) continue; // 行頭にセパレータがある行も無視
    if (false === $pos) {
      $a_KeyData[$line] = ""; // セパレータがない場合は行全体をKEYとしDATAは空とする。
    } else {
       $a_KeyData[substr($line, 0, $pos)] = substr($line, $pos + 1); // $a_KeyData[$key] = $data;
    }
  }
  return $a_KeyData;
}
?>

単体テスト 実行

<?php include "uKeyDataArrayGet.func"; ?>
<?php
  $data = <<< EOT
KEY1 DATA1 コメント
キー2 データ2
キー3
 無効データ
キー2 重複データ
EOT;
  $a_ret = uKeyDataArrayGet(" ", $data);
  foreach ($a_ret as $key => $data) {
    echo "key=$key data=$data<br>\n";
  }
?>

<?php include "uJsClose.func"; print(uJsClose()); // 閉じるボタン ?>