電子書籍の厳選無料作品が豊富!

MYSQLからphpで取り出したハイパーリンクのタグが文字列化してしまい機能せず困っています。
キーワードを変えて散々ググったりヤフったりしたのですが、キーワードが悪かったのか答えは在ったのに気付かなかったのか解決策が見つけられませんでした。
phpMyAdminのバージョン3.2.4を使用しています。

取り出したURLはこのようなものです。
<a href="http://www.~">作品名<img src="http://www~" width="" height="" border="" alt="" /></a>
これがHTMLソースでは
&lt;a href=&quot;http://www.~&quot;&gt;作品名&lt;img src=&quot;http://www~&quot; width=&quot;&quot; height=&quot;&quot; border=&quot;&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
こうなっているのが問題だと思うのですがどのように解決したらよいのでしょうか。
質問慣れしていないため回答に必要な情報を出せていないかもしれません
そういった場合もお手数ですがご指摘いただけるとありがたく存じます。。

ソース

<?php
require_once '../Encode.php';
try {
$db = new PDO('mysql:host=localhost; dbname=php10', 'phpusr', 'phppass');
$db->exec('SET NAMES utf8');
} catch(PDOException $e) {
die('エラーメッセージ:'.$e->getMessage());
}
$stt = $db->prepare('SELECT * FROM games ORDER BY fee');
$stt->execute();
?>



<tbody>
<?php while ($row = $stt->fetch(PDO::FETCH_ASSOC)) { ?>>
<tr>
<td colspan="3" height="22">作品名<?php e($row['title']); ?></td>
</tr>
<tr>
<td width="115" rowspan="2">バナー<?php e($row['bannar']); ?></td>
<td width="644" height="125" colspan="2">説明・解説<?php e($row['main']); ?></td>
</tr>
<tr>
<td width="321" height="20">その他情報<?php e($row['cost']); ?></td>
<td width="321" height="20"><a href="games_edit.php?sid=<?php e($row['sid']); ?>">
編集</a></td>
</tr>
</tbody>
<?php } ?>
</table>

A 回答 (1件)

SQLに登録する際にhtmlspecialcharsしているんじゃないですかねぇ?


そのフローをやめればいいような気がしますが、
PHP5以降であればhtmlspecialchars_decodeなどでサクッといけそうです。

もちろんstr_replaceでも簡単に対応できそうですが

この回答への補足

PHPは5以降です、
<?php
$str = '<p>this -&gt; &quot;</p>';
echo htmlspecialchars_decode($str);
// クォートが変換されないことに注意しましょう
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>
という例文をみつけて質問のソースに混ぜようとしたのですが当方PHP初心者以前の状態でありまして、うまく動作させることができませんでした。

大変恐縮なのですが正解を教えていただけないでしょうか。

補足日時:2010/09/28 20:14
    • good
    • 0
この回答へのお礼

せっかくのアドバイスを結局理解することができず。
このような形で
<a href="<?php $str = e($row['adressa']); ?>" target="_blank"><?php $str = e($row['title']); ?><img src="<?php $str = e($row['adressb']); ?>" width="1" height="1" alt="" border="0" /></a></td>

強引に解決することとなってしまいました。
自らの実力も考えず分不相応な質問をしてしまい。
お時間をいただいてしまい申し訳ありませんでした。

お礼日時:2010/10/01 09:49

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