- ベストアンサー
""を"に変えたい!
ほとんど、phpが分からず、人のコードを参考にして作った物をいじっています。 今回、どうしてもわからない事があるので質問しました。 item.csvとcate.csvからページを作成しています。 item.csvにデータを入れるのですが、バナータグを入れると ,"<a href=""http://・・・"" target=""_blank""><img src=""http://・・・"" border=""0""></a>", このようになってしまい、上手く表示ができない状態です。(エクセルが原因と考えられます) ""を"に置き変えてちゃんと表示できるのようにしたいのですが、どのようにすればいいのでしょうか? この問題点をクリアすればどうにかなりそうです。 すいませんが、どこをどのように直せばバナーが上手く表示できるようになるのでしょうか? phpがほとんど分かっていない為、詳しく教えてください。よろしくお願いします。 <?php $C=$_GET["c"]; //クエリからパラメータを取得 $DATA=file("item.csv"); //CSVファイルを1行1要素で配列に読み込む $CAT_DATA=file("cate.csv"); //カテゴリ用CSVファイルを読み込む //CSVファイルからページデータを獲得する関数 //@引数 $id :ページID //@戻り値 array :ページデータ //(該当するIDがなければ空の配列を返す) function getPageRecord ( $id ) { $filename = 'cate.csv'; // CSVファイル名 $maxlen = 1024; // 1行の最大長(バイト) $record = array(); if ($fp = fopen($filename, 'r')) { while ($rec = fgetcsv($fp, $maxlen, ',')) { if ($rec[0] == $id) { $record = $rec; break; } } fclose($fp); } return $record; } //ページデータ獲得 $page = getPageRecord($_GET['c']) //獲得したデータのレイアウト ?> <?php if($C){ print"<head>\n"; print"</head>\n"; print"<body>\n"; for($i=sizeof($DATA)-1;$i>=1;$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う $line=explode(",",$DATA[$i]); //1要素をさらにカンマで分解し配列に格納 if($line[1]==$C){ //もしパラメータとカテゴリ番号が一致すれば表示 //問題箇所:商品出力:バナータグやテキストリンクタグを入れると上手く表示できません print"<table width='90%' class='shop'><tbody><tr><td align='center' width='20%'>{$line[3]}</td><td width='60%' colspan='2'><p>{$line[2]}<br>{$line[7]}</td></tr></tbody></table>\n"; } } }else{ print"<head>\n"; print"</head>\n"; print"<body>\n"; } ?> </body></html>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$DATA=file("item.csv"); //CSVファイルを1行1要素で配列に読み込む を $fp = fopen("item.csv", "rt"); while ($DATA[] = fgetcsv($fp)) ; fclose($fp); にするとcsvが自動的に処理されます $DATA[ ]は , で explodeされた配列になるので新たに explode する必要はありません for($i=sizeof($DATA)-1;$i>=1;$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う $line=$DATA[$i]; if($line[1]==$C){ //もしパラメータとカテゴリ番号が一致すれば表示
その他の回答 (1)
- tany180sx
- ベストアンサー率63% (239/379)
単純な文字の置換なら $str = str_replace('""', '"', $str); ですがexplode()ではなくちゃんとしたパーサを使った方がいいかと。 //$line=explode(",",$DATA[$i]); $line=csv2values($DATA[$i]); function csv2values http://rabis.iblis.org/index.php?CSV
お礼
ご回答ありがごうございます。 >$str = str_replace('""', '"', $str); $line = str_replace('""', '"', $line);これで試した所、バナーは表示されるようになりました。 ただバナーの前後に " が表示されている状態です。 もう少しです。 >$line=csv2values($DATA[$i]); こちらの方は今、時間がないので明日にでも試したいと思います。 ありがとうございました。
お礼
返事が遅くなりすいません。何とか解決いたしました。 それともう1つ質問していいですか? 上記のコードの場合 http://abc.com/c-1.html とかになるのですが、間にカテゴリを1つ増やす何て事できるのでしょうか? こんな感じ http://abc.com/カテゴリID/c-1.html ちなみにCSVデータには cate.csv カテゴリID,カテゴリ名,,,,, item.csv 商品ID,カテゴリID,商品名などがあります。 もしよろしければ教えてください。よろしくお願いします!