PHPについて質問です。


現在文字数をカウントするプログラムを作成しようとしているのですが、
入力してもらった文字をどのようにカウントし、出力するかというのがわからず困っております。
時間がある方でプログラムを書いてくださる方おりましたらよろしくお願いいたします。

ビジュアルのHTMLについては作成しております。

http://oskuni7.sakura.ne.jp/title_sakusei.html


カウントされた文字の結果はテーブルの下に 『 作成されたタイトルは何文字になります 』 と表示させたいと考えております。

文字数は全角文字を1文字、半角文字を0.5文字と認識するようにしたいと考えています。

プログラムを書いてくださった方多めにポイントを払わせて頂きます。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2008/11/17 03:07:29
  • 終了:2008/11/17 11:50:43

ベストアンサー

id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/11/17 07:07:35

ポイント100pt

PHPやサーバの処理環境が SJIS になっているという前提で、下記のような感じでどうでしょう。

<?php
mb_internal_encoding('SJIS');
$myself = basename($_SERVER["SCRIPT_NAME"]);
$title = isset($_POST['title']) ? $_POST['title'] : '';
$len = strlen($title) / 2;
$outmsg = ($len > 0) ? "文字数は $len です。" : '';

echo <<< EOF
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML4.01Transitional//EN">
<html>
<head>
<META http-equiv="Content-Language"content="ja">
<META http-equiv="Content-Type"content="text/html;charset=SJIS">
<title>文字数をカウント</title>
</head>
<body>
<center>
タイトルを入力し、文字数をカウントするのボタンを押してください。<br /><br />
<form name="myForm" method="post" action="$myself">
<table width="100%" cellpadding="5" border="1" bordercolor="brown" cellspacing="0">
<tr>
<td colspan="2" bgcolor="brown"  align="center">
<b><font color="white">★ 文字数をカウントするページ ★</font></b>
</td>
</tr>
<tr>
<td bgcolor="gold" width="70%" align="center">
<b>タイトル:</b><input type="text" name="title" value="{$title}" size="150" />
</td>
<td align="center"> 
<input type="submit" name="exec" value="文字数をカウントする" />
</td>
</tr>
</table>
</form>
{$outmsg}
</center>
</body>
</html>

EOF;
?>
id:aiomock

ご回答ありがとうございます。

2008/11/17 11:45:23

その他の回答(1件)

id:hijk05 No.1

hijk05回答回数1307ベストアンサー獲得回数232008/11/17 06:55:59

ポイント60pt

SIJSを使ってる場合は、strlenの返す値を1/2倍すればよいです。

http://www.scollabo.com/banban/php/ref/ref_strlen.html

-------

SJISでない場合は、

mb_convert_encoding

関数を用いてSJISに変換してからstrlenをすればよいです。

id:aiomock

ご回答ありがとうございます。

2008/11/17 11:45:17
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/11/17 07:07:35ここでベストアンサー

ポイント100pt

PHPやサーバの処理環境が SJIS になっているという前提で、下記のような感じでどうでしょう。

<?php
mb_internal_encoding('SJIS');
$myself = basename($_SERVER["SCRIPT_NAME"]);
$title = isset($_POST['title']) ? $_POST['title'] : '';
$len = strlen($title) / 2;
$outmsg = ($len > 0) ? "文字数は $len です。" : '';

echo <<< EOF
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML4.01Transitional//EN">
<html>
<head>
<META http-equiv="Content-Language"content="ja">
<META http-equiv="Content-Type"content="text/html;charset=SJIS">
<title>文字数をカウント</title>
</head>
<body>
<center>
タイトルを入力し、文字数をカウントするのボタンを押してください。<br /><br />
<form name="myForm" method="post" action="$myself">
<table width="100%" cellpadding="5" border="1" bordercolor="brown" cellspacing="0">
<tr>
<td colspan="2" bgcolor="brown"  align="center">
<b><font color="white">★ 文字数をカウントするページ ★</font></b>
</td>
</tr>
<tr>
<td bgcolor="gold" width="70%" align="center">
<b>タイトル:</b><input type="text" name="title" value="{$title}" size="150" />
</td>
<td align="center"> 
<input type="submit" name="exec" value="文字数をカウントする" />
</td>
</tr>
</table>
</form>
{$outmsg}
</center>
</body>
</html>

EOF;
?>
id:aiomock

ご回答ありがとうございます。

2008/11/17 11:45:23
  • id:Mook
    WEB ページより、PHP のコードを公開されたほうが良いかと思います。
    (SUBMIT の部分に問題もあるようですし。)
  • id:gelgelgel
    phpじゃなくてAjaxならリアルタイムで文字数カウントできますよ。

    http://labs.adobe.com/technologies/spry/demos/formsvalidation/
  • id:aiomock
    Mook さん

    申し訳ございません。

    次回よりコードを公開させて頂こうかと思います。
  • id:aiomock
    gelgelgel さん

    Ajaxでリアルタイム処理が出来るとは知りませんでした。

    処理が少しわからないので少しずつ勉強していきたいと思います。

    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません