- ベストアンサー
データベースの表示結果について
データベースのシミュレーションプログラムを作成しているのですが 表示結果でどうしても修正できない箇所があり困っています。 -------------表示結果--------------------- "リンゴとバナナ" -------------表示結果のソース------------- "<a href='test'>リンゴとバナナ</a>" -------------プログラム内----------------- エンコード部分 KeyWord=htmlspecialchars($KeyWord); $KeyWord=mb_convert_kana($KeyWord,"s","euc-jp"); $ArrKeyword=explode(" ",$KeyWord); ・ ・ ・ 判定プログラム<略> ・ ・ ・ 表示部分 for($i=0; $i<$Size;$i++){ //解説(1) $line=explode(",",$Result[$i]); print"{$line[1]}<br>"; } ------------------------------------------ 何故かわかりませんが表示結果の前後に「"」が勝手に挿入されていて CSVの中をみても<a~>の前後に"はありません。 文字コードをShift_JISに統一すると表示結果は<a href='test'>リンゴとバナナ</a>と正常に表示されます。 ですがそれだと、「ー」を使った場合に検索されなくなるのでそれも困ります。 過去ログをさらってみたのですが検索方法が下手なのかヒットせず改善方法がみつかりません。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私の環境では、同様の現象が再現できなかったので、 解決方法ではありませんが一言。 私の環境では、バージョンの違いのせいか、 <?php $Data=file("./common/data/data.csv"); for($i=0; $i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); print{$line[1]}"<br />"; } ?> これでは動作しなかったので、 print{$line[1]}"<br />"; ↓ここをこうしてみました。 print $line[1]."<br />"; 期待通りの動作ができているようです。 PHPソースもCSVファイルも、 EUC-JPで作成してテストしてみました。
その他の回答 (1)
ざっと見た感じ、ここを直せばよいのではないかと・・・ (誤)print"{$line[1]}<br>"; (正)print {$line[1]}"<br>";
補足
ご意見を頂きありがとうございます。 早速試してみたのですが下記のようなエラーがでて表示されませんでした・・・。 Parse error: parse error, unexpected '{' in 取りあえず原点にもどってただ表示させるだけにソースを書き換えました。 --------------ソース-------------- <?php $Data=file("./common/data/data.csv"); for($i=0; $i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); print{$line[1]}"<br />"; } ?> ----------------------------------- 自分なりにデータベースなかみを変えて調べてみたのですが。 Aタグをはずし「リンゴとバナナ」だけで実行してみたら 普通に「リンゴとバナナ」と表示されました。 <ahref='test'>リンゴとバナナ</a> aとhの間の半角スペースを削除し繋げた場合 <ahref='test'>リンゴとバナナ</a>と普通に表示されました。 もちろんAタグが機能しませんが・・・ 上記の結果をみてAタグの半角スペースが原因だとわかりました。 こういうことは通常ありえるんでしょうか? また打開策を考えたのですが一向にみつかりません。 何かよい方法はないでしょうか??
お礼
原因がわかりました。 僕の使っているエディターに問題があったみたいです。 csvエディターが勝手に引用符「"」を使用するタイプで目視では「"」はみられないのですが裏側で「"」が挿入されてたみたいです。 エディターを変えて試した結果、正常に表示されました。。。 まさかこんな所がオチだったとは。。。。 ご迷惑をお掛けしました。。。。 でもいい勉強になったので本当に助かりました。