2017-04-11 64 views
0

更奇怪的事情...很難做出這個「問題」。我有一個完整的網站在php和JavaScrip。內容以多種方式處理,訪問mySQL和文件。一種方法是隻包含一個構建html字符串的php。包括就在網站的結構,我做了一個簡單的輸出緩衝器:PHP輸出緩衝區損壞獲取包含內容

ob_start(); 
include_once($url); 
$output = ob_get_contents(); 
ob_end_clean(); 
echo_cont($output); 

凡echo_cont只是存儲的內容在以後打印,在正確的地方。但是讀取一些照片文件並構建專輯的「簡單」頁面即將被破壞。 HTML的部分缺失,奇異的變化是這樣的:

  • 類=」按鈕2" 的時候應該是類=‘按鈕2’這樣的元素成爲 格式化
  • ‘HTTP www.mywebsite.com.br文件夾’時它假設爲 「http // www.mywebsite.com.br /文件夾」...

其他頁面正在包含對。

我今年開始在這個網站使用輸出緩衝區,不知道是否可以是這種類型的問題或者可能是別的,但是不容易尋找線索,不容易運行頁面之外的頁面,因爲它取決於幾個庫 - 有點複雜。它接到我後面的一段文字編碼和壞的解碼。你怎麼看?

編輯:echo_cont功能:

$htmlConteudo = ''; 
function echo_cont($html){ 
    global $htmlConteudo; 
    $htmlConteudo .= $html; 
} 
+0

您是否完成了$ output的var轉儲以檢查您的echo_cont()函數是否影響輸出 – bumperbox

+0

確保您包含的所有文件使用相同的編碼,最好是UTF-8。如果你混合編碼,這可能發生。嘗試在編輯器中打開一個錯誤的源文件,並確保其保存爲UTF-8。 –

+0

我知道很難提出真正表明您的問題的問題,但如果我們甚至沒有改變來重現您似乎有問題的問題,我們也無法幫助您。請參閱:https://stackoverflow.com/help/mcve解決此問題的一種方法是逐步進行。在使用'echo_cont()'存儲它之前,首先回顯(或郵寄)一小段代碼,該代碼是否仍然正常?然後在檢索它時做同樣的事情。我的觀點是,它一定在某個地方出了問題,只是在哪裏追蹤。 –

回答

0

我決定回答我自己的捐助者的思路問題,因爲這個問題不是關於PHP的功能,但方式我正在調查 - 並能與發生你閱讀我的答案。

問題是:瀏覽器中顯示的圖像是發送數據的解釋,如開發人員窗口中顯示的信息。不是原始數據,它是從數據中製作XML/HTML文檔的嘗試。在這種情況下,需要可以看出,之前從瀏覽器解釋原始數據,並且它可以與這個簡單的功能:

function strTag($xmlstr){ 
    $str = str_replace('<', '&lt;', $xmlstr); 
    $str = str_replace('>', '&gt;', $str); 
    $str = str_replace(' ', '&nbsp;', $str); 
    return nl2br($str); 
} 

比,捕獲數據:

ob_start(); 
include("www_pc/conteudo_imagens.php"); 
$output = ob_get_contents(); 
ob_clean(); 
echo(strTag($output)); 

現在是有時間靠近屏幕並檢查所有細節。在我的情況下,有一些像這樣的標籤:

<div style="float:left;width:80px;height:120px;margin:0px 5px 5px 0px;> 

你可以看到在引用樣式聲明的末尾丟失(它發生編碼晚夜)。所以當瀏覽器嘗試重新生成xml並做出自己的解釋時,在嘗試查找錯誤時會混淆分析。我會在Safari和Firefox中測試,所以它不是瀏覽器故障,而是瀏覽器AI限制。只能在電影中看到原始代碼,AI!