![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
たとえば
$data="あ5Aいう7えお"
という文字列があったとして
一文字ずつの決まった長さの合計を表示しようとおもっています。
$KAZU=mb_strlen($data,"SJIS");
for($i=0;$i!=$KAZU;$i++){
$moji=mb_substr($data,$i,$i,"SJIS");
$moji_size=mb_strwidth($moji,"SJIS");
if($moji_size==2){
$px+=12;
}else{
if(mbereg("/[A-Z]./",$moji)){
$px+=10;
}elseif(mbereg("/[0-9]./",$moji)){
$px+=9;
}elseif(mbereg("/[a-z]./",$moji)){
$px+=8;
}else{
$px+=6;
}
}
if($px>370){
$px=0;
break;
}
}
print "$px";
$data="あ5Aいう7えお"の場合結果は(12+9+8+12+12+9+12+12=)86になってほしい
この方法でやってもうまくいきませんでした。なんだか面倒なことしているような気もしますが、もっと簡単な方法など知っている方などいらっしゃいましたら、どなたか教えていただければ幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
なんとなくプログラマーの野生の勘で、
> $moji=mb_substr($data,$i,$i,"SJIS");
$moji=mb_substr($data,$i,1,"SJIS");
> mbereg("/[A-Z]./",$moji)
mb_ereg( "[A-Z]", $moji ) ※数字・英小文字も同様。
とかじゃないかなーと思わないでもなかったり。
No.2
- 回答日時:
なんか数があわないとおもったらAは8じゃなくて10ですよね??
こんな感じでやるとよいのでは?
<?
$data="あ5Aいう7えお";
$px=strlen($data)*6;//1バイト文字は6、2バイト文字は12をたす
if(preg_match_all("/[A-Z]/",$data,$matches)) $px+=count($matches[0])*4;//A~Zはさらに4をたす(つまり10をたす)
if(preg_match_all("/[0-9]/",$data,$matches)) $px+=count($matches[0])*3;//0~9はさらに3をたす(つまり9をたす)
if(preg_match_all("/[a-z]/",$data,$matches)) $px+=count($matches[0])*2;//a~zはさらに2をたす(つまり8をたす)
print $px;
?>
間違いに指摘されて今気づきました。大変申し訳ありませんでした。
こっちのほうが処理が簡単そうですね。使ってみたいと思います。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- HTML・CSS 検索窓とcssハックについて 3 2022/04/22 12:21
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
自動で番号を振りたい
-
CSVデータの行数カウントをした...
-
別ファイルの構造体の値を読み...
-
【PHP】csvファイルへの書き出...
-
多次元配列の一次元目の最大値...
-
ログファイルが一定行数を超え...
-
自動生成するCSVの改行が上手く...
-
CSVファイルの最終行のデー...
-
テキストデータから指定行の削除
-
バイナリファイルの内容を、そ...
-
PHPファイルでテキストファイル...
-
rubyで複数列のデータを一行に...
-
C言語でCSVファイルの行数を読...
-
バイナリで書き込みましたがエ...
-
ヒアドキュメントの中のfor文
-
PHPのアクセスカウンターのバグ...
-
$_SESSIONに二次元配列を使える...
-
C言語の配列をPush(追加)する...
-
CArrayのソート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
stdClass Objectを連想配列のよ...
-
CSVデータの行数カウントをした...
-
ヒアドキュメントの中のfor文
-
複数行のデータのPOST処理に関して
-
While文を使って配列の中身を全...
-
C言語でCSVファイルの行数を読...
-
行数が30万件ほどあるCSVから、...
-
csvの内容を行単位で削除したい
-
CSVファイルの最終行のデー...
-
バイナリファイルの内容を、そ...
-
PHPで、CSVファイルを、指定し...
-
doxygenを使用する環境について
-
csvファイルを読み込み→上書き...
-
FortranのOPEN文
-
PHPでCSVの一部の行を編集したい
-
ラジオボタンのチェックの付け方。
-
Ethnaでのsection使用法
-
CSVデータを正規表現で抜き出せ...
おすすめ情報