元ニート中卒派遣30代ブサメン童貞のブログ

みんなが存在に疑問を感じている「元ニート、中卒、派遣、30歳超えのブサメン童貞」が実際に生息し、そして「どうやって生きてるか」を晒していくブログ

形態素解析サイトができた

ブログとは恐ろしいものです。ちょっと書かずにいると「ま、きょうも書かなくていっか」という気になります。ブログうんぬんは関係なく、ここまで生きてきて、思考が楽なほうへ楽なほうへ行くことに抵抗がなくなっているのかもしれません。なんとも恐ろしい。こういうおっさんになってはいけません。

さて、PHPでcorevo API形態素解析APIを使って日本語を形態素解析するサイトを作るのは、とりあえずきょうで一時終了にします。あとは、もう少しちゃんとデザインをすることと、別のAPIも使えるようにすることに注力します。

分岐をする

前回のブログで、JSON形式のデータを整形することができました。ここでは最初にアクセスされたとき、フォームの値が空だったときの分岐を、ちょっと前にブログでも書いたコロン構文を使って書いていきます。

<?php if ($_SERVER['REQUEST_METHOD'] === "POST") : ?>
  <?php if ($_POST['ma'] === "") : ?>
    <p>空です</p>
  <?php else : ?>
    <section id="">
      <article>
        <h1>入力した文章</h1>
        <p><?php echo htmlspecialchars($postdata['sentence'], ENT_QUOTES, "utf-8"); ?></p>
      </article>
      <article>
        <h1>解析された文章</h1>
        <p><?php
        if (isset($res_json['word_list'])) {
          foreach ((array)$res_json['word_list'] as $key1 => $value1) {
            foreach ($value1 as $key2 => $value2) {
              $value = implode(":", $value2);
              echo " [" .htmlspecialchars($value, ENT_QUOTES, "utf-8") ."] <br>";
            }
          }
        }
        ?></p>
      </article>
    </section>
  <?php endif; ?>
<?php else : ?>
  <p>ここに解析結果が表示されます</p>
<?php endif; ?>

まずHTMLですが、<section><article>HTML5の練習。この使い方で間違っているのか、そうでないのかは謎です。それ以外は、この部分だけを見ても特別なことはしていません。

肝心のPHPですが、最初のif()はPOST送信されたか、されていないのか。されていなければ、PHP的な処理は行わずテキストだけをHTMLで書き出します。次のif()はPOST送信されているけど、フォームの中身があるのか、ないのか。フォームの中か空だった場合も、テキストでその旨を書き出すだけです。PHP的な処理を行うのはフォームに文章が入力されて、それがPOST送信された場合だけです。

まず使いやすさを考慮して、入力した文章を$postdata['sentence'];で書き出しています。ちなみに、はじめてユーザ定義関数を書かせることでおなじみのhtmlspecialchars()は、なるべく書き出す直前に処理させるのが推奨らしいです。処理スピードの問題ではなく、確実にエスケープさせるためだと思います、たぶん。それから前回のブログでも書いた処理を行って完成。こっちはフォームから直接取得した値じゃないし、API側に一回渡しちゃってるんでhtmlspecialchars()する必要はない……はず。

これでやっと完成。はじめてなので、へっぽこなのは許してください。ブログを書くのも、コードを書くのも、怠ければ全く上達しない。自戒の念を込めて、きょうからまたがんばります。