$messegeから任意の文字数の文字を取得
知りたいこと:
$messegeから任意の文字数の文字を取得を下の条件でする手段
言語:
PHP
環境:
Linux Kernel 2.6.X + Apache 2.X + PHP 5.X,
Windows NT 5.1 + IIS 5.1 + PHP 5.X
その他条件:
環境及びこの答えを記述するPHPファイル以外のファイルを必要としない事,
PHPファイル及び$messege内の文字コードを問わない事
(ただしPHPファイルと$messege内の文字コードは同一のものとする),
$messegeには改行は含まれない,
$messegeにはUTF-8で定義された文字全てがランダムな順番でランダムな数が入っているとする
出来れば出来て欲しいこと:
1byte文字の1文字と2byte文字の1文字を同じ1文字として評価できる事,
Linux Kernel 2.4.X 以降 + Apache 1.3.X 以降 + PHP 4.0.X 以降で動作する事,
Windows NT 4.0 以降 + Apache 1.3.X 以降 + PHP 4.0.X 以降で動作する事,
Windows NT 4.0 以降 + IIS 4.0 以降 + PHP 4.0.X 以降で動作する事
<script language=”JavaScript”>
var postmaxchars = 10000;
var isadmin = ”0”;
function checklength(theform) {
if (postmaxchars != 0) { message = ”系统限制: 10000 字节”; }
else { message = ””; }
alert(”¥n当前长度: ”+theform.message.value.length+” 字节¥n¥n”+message);
}
function validate(theform) {
if (theform.message.value == ”” && theform.subject.value == ””) {
alert(”请完成标题或内容栏。”);
return false; }
if (postmaxchars != 0 && isadmin != 1) {
if (theform.message.value.length > 10000) {
alert(”您的帖子长度超过限制¥n¥n当前长度: ”+theform.message.value.length+” 字节¥n系统限制: 10000 字节”);
return false; }
else { return true; }
} else { return true; }
}
</script>
http://mikeneko.creator.club.ne.jp/~lab/kcode/index.html
$B%_%1%M%3$N(B $BJ8;z%3!<%I$NIt20(B
比較的簡単に処理を済ませる方法としては、MB_SubStrを使う方法があります。
string Mb_SubStr(String 文字列,int 開始位置 , int 長さ , string 文字エンコーディング)
引数のうち、文字エンコーディングは省略可能です。
(内部も自演コーディングが使用されます。)
複数のOSでの使用を考えておられるようですので、
なんらかの統一した文字エンコードを使用する必要があるといえます。
ただし、マルチバイト関数群が機能するのは、PHP4.06以降ですので、
4.05以前のPHPでのマルチバイト処理を行う場合、
自前で処理を記述する必要があります。
こうなってくると、文字コードに応じてバイト単位で
検証を行っていく必要があります。
Perlをはじめとして、過去から問題になってきている部分ですので、
さまざまな資料がありますので、そちらを参考にルーチンを作成されるのも良いかとは思います。
PHPらしくないのが、玉に瑕ですが。
それでは失礼します。
> 言語:
> PHP
と書いているはずです。
また処理の特性上サーバサイドで処理しなければなりません。