ChatGPTに、条件に合った文字列を抽出するPHPスクリプトを作成させてみた

コマンドラインのみでMoodleのインストールを行う記事を書きましたが、
その処理はPHPスクリプトを作成して実行させています。


https://qiita.com/OkiOkiM/items/b7cc41d34e5e8231d604

しかし、途中でインストールするMoodleのバージョン番号を設定する箇所があり、Moodleのgitで管理されている最新のバージョン番号を設定する必要があります。
最新バージョンの確認方法は、
```
git clone git://git.moodle.org/moodle.git
```
を実行して、Moodleのパッケージを取ってきた後に、
```
git branch -a
```
を実行すると、確認できます。
【参考】
https://docs.moodle.org/3x/ja/%E7%AE%A1%E7%90%86%E8%80%85%E7%94%A8Git#.E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.82.92Git.E3.83.AA.E3.83.9D.E3.82.B8.E3.83.88.E3.83.AA.E3.81.8B.E3.82.89.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.E3.81.99.E3.82.8B

しかし、MoodleインストールをPHPスクリプトで自動処理する際には、
最新のバージョン番号を確認する処理をPHPスクリプトの中でやる必要があります。

筆者はPHPの文法に明るくないため、ChatGPT
https://chat.openai.com
を使って、一連の処理を実行するPHPスクリプトをChatGPTに作成してもらいました。
ChatGPTには、以下の命令を投げました。
```
以下の内容が記載されているTXTファイルから、MOODLE_　の直後に記載されている数字のうちで、最大の値を取得するPHPのスクリプトを教えてください。　

local_401_STABLE
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/MOODLE_13_STABLE
  remotes/origin/MOODLE_14_STABLE
  remotes/origin/MOODLE_15_STABLE
  remotes/origin/MOODLE_16_STABLE
  remotes/origin/MOODLE_17_STABLE
  remotes/origin/MOODLE_18_STABLE
  remotes/origin/MOODLE_19_STABLE
  remotes/origin/MOODLE_20_STABLE
  remotes/origin/MOODLE_21_STABLE
  remotes/origin/MOODLE_22_STABLE
  remotes/origin/MOODLE_23_STABLE
  remotes/origin/MOODLE_24_STABLE
  remotes/origin/MOODLE_25_STABLE
  remotes/origin/MOODLE_26_STABLE
  remotes/origin/MOODLE_27_STABLE
  remotes/origin/MOODLE_28_STABLE
  remotes/origin/MOODLE_29_STABLE
  remotes/origin/MOODLE_30_STABLE
  remotes/origin/MOODLE_310_STABLE
  remotes/origin/MOODLE_311_STABLE
```
ChatGPTからのレスポンスは以下。
```
以下のようなPHPスクリプトを使用することで、MOODLE_の直後に記載されている数字のうちで最大の値を取得することができます。

<?php
// 対象のテキストファイルのパス
$file_path = '/home/hoge/file.txt';

// テキストファイルを読み込み、MOODLE_の直後に記載されている数字を抽出し、最大値を取得
$max_version = 0;
$file_lines = file($file_path, FILE_IGNORE_NEW_LINES);
foreach ($file_lines as $line) {
  if (preg_match('/MOODLE_([0-9]+)_STABLE/', $line, $matches)) {
    $version = $matches[1];
    if ($version > $max_version) {
      $max_version = $version;
    }
  }
}

echo "最大のバージョン番号: MOODLE_" . $max_version . PHP_EOL;

?>

上記のスクリプトは、指定したテキストファイル ($file_path 変数) を file() 関数を使用して読み込み、各行に対して正規表現を使用して MOODLE_ の直後に記載されている数字を抽出し、最大のバージョン番号を $max_version 変数に保持します。最終的に、最大のバージョン番号を表示します。
```

■phpスクリプトの作成
ChatGPTの返答をもとに、phpスクリプトを作っていきます。
はじめに、LINUX上で、git branch -aを実行した結果（以下）を
サンプルファイルtest.txtに保存します。
```
local_401_STABLE
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/MOODLE_13_STABLE
  remotes/origin/MOODLE_14_STABLE
  remotes/origin/MOODLE_15_STABLE
  remotes/origin/MOODLE_16_STABLE
  remotes/origin/MOODLE_17_STABLE
  remotes/origin/MOODLE_18_STABLE
  remotes/origin/MOODLE_19_STABLE
  remotes/origin/MOODLE_20_STABLE
  remotes/origin/MOODLE_21_STABLE
  remotes/origin/MOODLE_22_STABLE
  remotes/origin/MOODLE_23_STABLE
  remotes/origin/MOODLE_24_STABLE
  remotes/origin/MOODLE_25_STABLE
  remotes/origin/MOODLE_26_STABLE
  remotes/origin/MOODLE_27_STABLE
  remotes/origin/MOODLE_28_STABLE
  remotes/origin/MOODLE_29_STABLE
  remotes/origin/MOODLE_30_STABLE
  remotes/origin/MOODLE_310_STABLE
  remotes/origin/MOODLE_311_STABLE
```

次に、ChatGPTが返してきたphpスクリプトを、
get_latest_Moodle_version_num.php に記入して、保存します。

最後にphpスクリプトを実行します。
```
chmod 600 get_latest_Moodle_version_num.php
php get_latest_Moodle_version_num.php
```

実行結果はこちら。
```
最大のバージョン番号: MOODLE_311
```