Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

いきおいでPHPを勉強する。その3

今のとこ余裕だったんだけど。
さっそく詰まりました。

関数コード生成フォーム

PHPコード

<?php
// 選択リストの値を取得
$name = "param";
$selected_value = $_POST[$name];

// 定義済み変数を取得
$array = get_defined_functions();
asort($array["internal"]);

// 配列から選択リストを作成する関数
// パラメータ:配列/選択リスト名/選択値
function disp_list($array, $name, $selected_value = "") {
    echo "<select size=\"20\" name=\"" . $name . "\">";
    while (list($value, $text) = each($array)) {
        echo "<option ";
        if ($selected_value == $text) {
            echo " selected ";
        }
        echo " value=\"".$text."\">" . $text . "</option>";
    }
    echo "</select>";
}

// 入力内容を処理する
$temp = "\$temp = %s();";
$temp_url = "http://www.php.net/manual/ja/function.%s.php";
$temp_link = "<a href=\"%s\" target=\"_blank\">%s</a>";
if (isset($_POST["param"])) {
    $param = $_POST["param"];
    $result = sprintf($temp, $param);
    $result_url = sprintf($temp_url, str_replace("_", "-", $param));
    $result_link = sprintf($temp_link, $result_url, $param);
}
else {
    $param = "";
}

?>

HTMLコード

<html>
<head>
<title>関数コード生成フォーム</title>
</head>
<body>
<?php

 // ...
 // 上記PHPコード
 // ...

?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
  <table cellpadding="10">
    <tr>
      <td>関数を選択:<br />
      <?php echo disp_list($array["internal"], $name, $selected_value); ?>
      <input type="submit" value="作成" name="sub1">
      </td>
    </tr>
    <tr>
    </tr>
    <tr>
      <td>作成されたコード:<br />
      <textarea name="ta1" rows="3" cols="40"><?php echo $result ?></textarea>
      <p>PHPマニュアルへのリンク: <?php echo $result_link ?></p>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

実行結果

f:id:hope_is_dream:20140428185750j:plain

一旦保留。