• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付をすべて2桁(07/02、 06/30)にしたい)

日付をすべて2桁(07/02、 06/30)にしたい

このQ&Aのポイント
  • a.html内にある日付のデーターを取ってきて日付をすべて2桁(もし 7/2 ならば 07/02 、6/30 ならば 06/30)にしたいのですが、なかなかうまくいきません。
  • 自分で作ったプログラムa.phpでは最初の日付しか2桁になりませんでした。
  • $filename = "a.html"; $filedata = @file($filename); $filedata = @join("",$filedata); preg_match_all('/(<>(.*?)<>.*<>.*<>)/',$filedata, $match); for($i=0;$i<count($match[0]);$i++){ $match[2][$i] = explode("、", $match[2][$i]); //////////この辺がうまくできない/////// for($m=0;$m<count($match[2][$i]);$m++){ $match[2][$i][$m] = explode("/", $match[2][$i][$m]); $match[2][$i][$m][0] = sprintf("%02d", $match[2][$i][$m][0]); $match[2][$i][$m][1] = sprintf("%02d", $match[2][$i][$m][1]); $match[2][$i][$m] = $match[2][$i][$m][0]."/".$match[2][$i][$m][1]; $match[2][$i] = join("、",$match[2][$i]); } print $match[2][$i]."<br>";//←最後はこの形で表示できるようにしてもらいたいです// } ?> どなたか教えてください。m(_ _)m よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • arcsin
  • ベストアンサー率70% (28/40)
回答No.1

まず、変数(配列)を使いまわし過ぎです。 初めのうちは、今回のようなバグを避けるためにも変数の使いまわしは避けたほうがよいでしょう。 何が悪いかというと、第2for文の$m==0のときのループで、 $match[2][$i] = join("、",$match[2][$i]); の部分にて、$match[2][$i][1以降] がつぶれてしまっています。以下のように書き直すとよいでしょう。 <? $filename = "a.html"; $lines = @file($filename); foreach ($lines as $line) {  $items = explode("<>", $line);  $dates = explode("、", $items[1]);  for($i=0; $i<count($dates); $i++) {   list($mon, $day) = explode("/", $dates[$i]);   $dates[$i] = sprintf("%02d/%02d", $mon, $day);  }  print join("、", $dates) ."<br>";  // ※どうしてもmatchsで表示したいなら↑消してこっち↓  // $match[2][$i] = join("、", $dates);  // print $match[2][$i]."<br>"; } ?> インデントに全角スペースを使っているのでコピペの際は注意してください。

bavarois
質問者

お礼

希望通りの結果が出ました。 ありがとうございました♪d(^o^)b♪

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • arcsin
  • ベストアンサー率70% (28/40)
回答No.2

#1です。 あまり質問者様のソースを変えないで修正するとすれば、以下のような形になるかと思います。 <? $filename = "a.html"; $filedata = @file($filename); $filedata = @join("",$filedata); preg_match_all('/(<>(.*?)<>.*<>.*<>)/',$filedata, $match); for($i=0;$i<count($match[0]);$i++){ $match[2][$i] = explode("、", $match[2][$i]); $dates = array();//★ //////////この辺がうまくできない/////// for($m=0;$m<count($match[2][$i]);$m++){ $match[2][$i][$m] = explode("/", $match[2][$i][$m]); $match[2][$i][$m][0] = sprintf("%02d", $match[2][$i][$m][0]); $match[2][$i][$m][1] = sprintf("%02d", $match[2][$i][$m][1]); $match[2][$i][$m] = $match[2][$i][$m][0]."/".$match[2][$i][$m][1]; $dates[$m] = $match[2][$i][$m];//★ } $match[2][$i] = join("、",$dates); //★ print $match[2][$i]."<br>"; } ?>

すると、全ての回答が全文表示されます。

関連するQ&A