読者です 読者をやめる 読者になる 読者になる

JavascriptでPHPの返り値を画面上に表示する

http://tydk27.info/aretter.html という下らないものを作っていました。入力された文字列をPHP側でmecabを用いて形態素解析し、名詞を「アレ」に変換して、変換後の文字列を画面上に表示します。おぉ、自分で書いててもくだらなすぎる。ニュースとかを変換すると失笑できますのでぜひ。

まずはmecab処理をしているPHP側。

<?php
$str = $_GET['str'];

$mecab = new MeCab_Tagger();
$nodes = $mecab->parseToNode( $str );

$ret = "";
$flg = False;

foreach ( $nodes as $n ) {
    $sur = $n->getSurface();
    $fea = $n->getFeature();

    if ( strpos( $fea, "名詞" ) === FALSE ) {
        $ret = $ret.$sur;
        $flg = False;
    } else {
        if ( $flg === True ) {
            continue;
        } else {
            $ret = $ret."アレ";
            $flg = True;
        }
    }
}

print $ret;

名詞が連続すると「アレアレアレ…」というようにアレな文章になってしまうので、その場合は最初の1回だけ適用しています。

っで、PHP側で作った文字列を画面上に表示するわけですが、そこをJavascriptjQuery)でやってしまいましょう、というお話。

$(document).ready(function () {
    $("#submitButton").click(function () {
        $('#error').text("");
        inputText = $("#textData").val();
        if (inputText.length == 0) {
            $('#error').text("入力して下さい");
        } else {
            translate(inputText);
        }
    });
});

function translate(string) {
    var obj = {};
    obj['str'] = string;
    $.get('mecab.php', obj, function(data) {
        $('#result').val(data);
    });
}

文字列が入力されていたら、translate()を呼び出し、mecab.phpに投げる。getした文字列をid="result"なテキストエリア等のvalにぶち込みます。

情弱なので、「こんなこともできるのかーほえー」と思ったものです。