こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

""を"に変えたい!

ほとんど、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>

投稿日時 - 2007-07-06 18:52:09

QNo.3144808

すぐに回答ほしいです

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

$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){ //もしパラメータとカテゴリ番号が一致すれば表示

投稿日時 - 2007-07-07 09:50:46

お礼

返事が遅くなりすいません。何とか解決いたしました。

それともう1つ質問していいですか?

上記のコードの場合

http://abc.com/c-1.html

とかになるのですが、間にカテゴリを1つ増やす何て事できるのでしょうか?

こんな感じ
http://abc.com/カテゴリID/c-1.html


ちなみにCSVデータには

cate.csv
カテゴリID,カテゴリ名,,,,,

item.csv
商品ID,カテゴリID,商品名などがあります。

もしよろしければ教えてください。よろしくお願いします!

投稿日時 - 2007-07-09 15:14:08

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

単純な文字の置換なら
$str = str_replace('""', '"', $str);

ですがexplode()ではなくちゃんとしたパーサを使った方がいいかと。
//$line=explode(",",$DATA[$i]);
$line=csv2values($DATA[$i]);

function csv2values
http://rabis.iblis.org/index.php?CSV

投稿日時 - 2007-07-06 19:40:14

お礼

ご回答ありがごうございます。
>$str = str_replace('""', '"', $str);
$line = str_replace('""', '"', $line);これで試した所、バナーは表示されるようになりました。
ただバナーの前後に " が表示されている状態です。
もう少しです。

>$line=csv2values($DATA[$i]);
こちらの方は今、時間がないので明日にでも試したいと思います。
ありがとうございました。

投稿日時 - 2007-07-06 20:57:45

あなたにオススメの質問