完結?数値複数入力&並べ替え練習問題
こちらの問題ですが、またもやid:yorutrainさんから助言を頂きました!
オプション複数使えるので、mb_convert_kana($suji1,’as’,’euc-jp’);みたいに書くとstr_replace要らなくなります。id:yorutrain
これマニュアルにちゃんと書いてありました、ありがとうございます1行短くなりました!
PHP: mb_convert_kana - Manual
オプション s「全角」スペースを「半角」に変換します(U+3000 -> U+0020)
複数回マッチさせたいときとかはpreg_match_allがマジおすすめ!id:yorutrain
preg_match_allはなんだかエラーになっちゃったので、使ってたeregをpreg_matchにして、あと正規表現の書き方もちょっと変えたらチェックできたんでおkおkwww状態です。
preg_match_allはまた別の機会に勉強します!(おい)
前後の空白を吹っ飛ばすのにはtrim関数が便利です。id:yorutrain
試してみました!trim関数の存在なんて知りませんでした。phpって便利な関数がいっぱいですね
以下修正後、ほぼ完璧?のソースです
<?php $suji1=$_POST["suji1"]; print <<< DOC_END <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=EUC-JP"> <form method="post" action="taiju3.php"> 数字<input type="text" name="suji1"><br> <input type="submit" value="送信"> </form> 半角スペースで区切って半角数字を入れて下さい<br> DOC_END; if( isset($suji1) ) { // 全角のものを半角にする(空白も) $suji1 = mb_convert_kana($suji1, "as", "EUC-JP"); //↓いらなくなった //$suji1 = str_replace(" "," ",$suji1); //数字だったらソート if ( preg_match("/^[0-9\s]+$/",$suji1) ){ //前後の空白を削除 $suji1=trim($suji1); $taiju=explode(" ","$suji1"); $saidai=count($taiju)-1; sort($taiju,SORT_NUMERIC); foreach ($taiju as $tmp) { print "$tmp<br>\n"; } print "<br>最小値"."$taiju[0]"; print "<br>最大値"."$taiju[$saidai]"; }else{ print "全て数字で入力して下さい"; } } ?>
出来たー!id:yorutrainさん、本当にありがとうございました!
ネットでマニュアルを検索し、学んで(?)、ブログで発表し、ネットでアドバイス(添削?)してもらう、という循環、スクールに通う手間やお金かけてないのに、ここまで出来ちゃって本当にいいんでしょうか?ありがたいことです。インターネット万歳!
実行結果はいずれ保管庫の方に載せます!