あなたの人生に効く作品がみつかる手書きのカード♪>>

a.html内にある日付のデーターを取ってきて日付をすべて2桁(もし 7/2 ならば 07/02 、6/30 ならば 06/30)にしたいのですが、なかなかうまくいきません。

自分で作ったプログラムa.phpでは最初の日付しか2桁になりませんでした。
-------------a.html---------------
<>06/25、7/2<>13:00~13:55<>あああああ<>
<>06/25、8/2<>19:00~20:00<>いいいいい<>
<>6/27<>19:00~21:48<>ううううううう<>
<>06/27、7/3、7/4、7/12<>19:58~20:54<>ええええええええ<>
<>7/1<>13:54~17:00<>おおおおおおお<>

--------------a.php----------------
<?
$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
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まず、変数(配列)を使いまわし過ぎです。


初めのうちは、今回のようなバグを避けるためにも変数の使いまわしは避けたほうがよいでしょう。


何が悪いかというと、第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>";

}

?>

インデントに全角スペースを使っているのでコピペの際は注意してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/02 15:24

#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>";
}
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング