- PR -

文字数のチェック

1
投稿者投稿内容
odik
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 69
投稿日時: 2007-08-16 21:37

perlにてプログラムを組んでおります。
ブラウザにテキストボックスと送信ボタン
を表示しています。

テキストボックスには、半角及び全角の文字が
入力できます。テキストボックスには任意の長さの
文字列を入力できますが、送信ボタン押下後、
サーバ側のperlプログラムにて、文字の桁数を
チェックし32文字より大きければ
エラー画面を表示したいと考えております。

桁数チェックの方法をご教授下さいます様お願します。
テキストボックスには全角及び半角が入力でき、
桁数のカウント方法が分かりません。

例)
@あいうえおabcde → 10文字と認識。正常。
Aあいうえおかきくけこさしすせそたちつてと
なにぬねのはひふへほabc → 33文字と認識。エラー。

文字の桁数チェックにlengthを使うと、文字列の長さ
(バイト数)が返されてしまいますので、
文字数が認識できません。

お分かりになる方、宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-16 22:16
引用:

odikさんの書き込み (2007-08-16 21:37) より:

文字の桁数チェックにlengthを使うと、文字列の長さ(バイト数)が返されてしまいますので、文字数が認識できません。お分かりになる方、宜しくお願い致します。


現在の文字エンコードがわかりませんが、use encode、decode で文字列デコードを噛ましてから length でしょうか。 記憶頼りなので間違っていたらすみません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Ay
常連さん
会議室デビュー日: 2006/10/29
投稿数: 45
投稿日時: 2007-08-17 01:27
Jcode が使えるなら、jlength メソッドとか。
コード:
use Jcode;

$length = Jcode->new($string)->jlength();



use encode とか使っている場合であれば、じゃんぬねっとさんの書込どおり、length 組み込み関数の戻り値が、バイト長でなく文字列長になるはずです。
odik
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 69
投稿日時: 2007-08-17 10:05
じゃんぬねっとさん
Ayさん

ご回答有難うございます。

ご存知でしたら、教えて下さい。
jcode.plを用いているのですが、
これでは日本語文字としての
長さは取得できませんよね。
1

スキルアップ/キャリアアップ(JOB@IT)