2013-05-29 27 views
0

這是很奇怪的解釋str_replace函數單引號,所以這裏去...PHP將不會從數據庫

我取出由包含轉義單引號phpMyAdmin的數據。我想通過一個PHP頭使用Content-Type: text/html;'轉換爲'

在數據庫中的一列,這是值:This year's...

我的內容類型設置爲<?php header('Content-Type: text/html; charset=UTF-8'); ?>

我與mysql_fetch_assoc()取出的數據,所以它應輸出,This year&apos;s。但是,它輸出This year�s...

然後我從數據庫中手動刪除This year's...,並用相同的This year's...(直接在數據庫中)替換它。我再次設置內容類型text/html並得到這個:

This year&apos;s... 

就是這樣......這幾乎是imossible解釋。單引號通過表單提交給數據庫。我把它拿來和內容類型設置爲text/html,並將其輸出作爲'。如果我去到數據庫中,手動刪除',並用相同的'取代它,它然後輸出&apos;

有沒有人遇到過這種奇怪的怪癖或識別可能是什麼?

UPDATE:

在數據庫中的值是This year's其通過一個形式上傳。報價在數據庫中未轉義。以下是我如何獲取數據。我想將'轉換爲&apos;

<?php 
    header('Content-Type: text/html; charset=UTF-8'); 
    include('init.inc.php'); 

    function get_feeds() { 
     $query = mysql_query("SELECT * FROM test ORDER BY id DESC LIMIT 1"); 
     while($fetch = mysql_fetch_assoc($query)) { 

      $text = $fetch['text'];   

      echo $text;   

      } 
     } 

?> 
<?php get_feeds(); ?> 

它輸出This year�s

我然後從數據庫中刪除This year's和手動寫在它的地方This year's。它輸出這個This year&apos;s

+1

這將是更好的共享代碼太 – Yogus

+0

我添加一些代碼。代碼很自我解釋。數據庫中的單引號全部未轉義,並通過表單上傳。 – Graham

+0

使用'$文字= html_entity_decode($取[ '文本']);' – Amir

回答

0

之前插入到數據庫轉換特殊字符爲HTML實體

htmlspecialchars("This year's");