2017-04-11 13 views
0

Fremde Dinge ... schwer, diese "Frage" zu machen. Ich habe eine komplette Website in PHP und JavaScrip erstellt. Die Inhalte werden auf viele Arten verarbeitet und greifen auf mySQL und Dateien zu. Eine Möglichkeit besteht darin, einen PHP-Code einzufügen, der die HTML-Zeichenfolge erstellt. Nach rechts in der Struktur der Website zu enthalten, habe ich einen einfachen Ausgangspuffer:PHP-Ausgabepuffer beschädigt erhalten Inhalt enthalten

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

Wo echo_cont einfach den Inhalt speichern, um später zu drucken, an der richtigen Stelle. Aber eine "einfache" Seite, die einige Fotodateien liest und ein Album erstellt, wird beschädigt. Teile von HTML fehlt, seltsame Veränderungen wie folgt aus:

  • class =“button2" wann sollte class = "button2" sein, so das Element unformatiert
  • "http www.mywebsite.com.br Ordner" werden, wenn es soll "http // www.mywebsite.com.br/ordner" sein ...

Andere Seiten werden richtig aufgenommen.

Ich fing an, Ausgabepuffer auf dieser Seite in diesem Jahr zu verwenden, ich weiß nicht, ob ein Problem dieser Art sein kann oder etwas anderes sein könnte, aber ist nicht einfach, nach Hinweisen zu suchen, ist nicht einfach, das zu laufen Seite außerhalb der Website, weil es von mehreren Bibliotheken abhängt - ist ein bisschen komplex. Es scheint mir ein Text zu kodieren und später schlecht zu dekodieren. Was denken Sie?

EDIT: die echo_cont Funktion:

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

haben Sie einen var-Dump von $ output ausgeführt, um zu überprüfen, ob die Funktion echo_cont() die Ausgabe nicht beeinflusst – bumperbox

+0

Stellen Sie sicher, dass alle Dateien die gleiche Codierung verwenden, vorzugsweise UTF-8. Wenn Sie Kodierungen mischen, kann dies passieren. Versuchen Sie, eine der fehlerhaften Quelldateien in einem Editor zu öffnen, und stellen Sie sicher, dass sie als UTF-8 gespeichert ist. –

+0

Ich weiß, dass es schwierig ist, eine Frage zu stellen, die dein Problem wirklich zeigt, aber wir können dir nicht helfen, wenn wir nicht einmal eine Veränderung haben, um das Problem, das du zu haben scheinst, zu reproduzieren. Siehe: https://stackoverflow.com/help/mcve Eine Möglichkeit, dieses Problem zu lösen, ist Schrittweise.Zuerst das Code-Bit echo (oder mailen), bevor Sie es mit 'echo_cont()' speichern, ist dieser Code noch in Ordnung? Dann machen Sie dasselbe, wenn Sie es abrufen. Mein Punkt ist, es muss irgendwo schief gehen, einfach aufspüren wo. –

Antwort

0

habe ich beschlossen, meine eigene Frage mit den Ideen der Mitwirkenden zu beantworten, weil das Problem nicht über die PHP-Funktion, aber die Art, wie ich war die Untersuchung - und kann geschieht mit Du liest meine Antwort.

Das Problem ist: das Bild im Browser angezeigt wird, ist eine Interpretation der Daten gesendet, wie die Informationen im Entwicklerfenster angezeigt. Ist nicht die Originaldaten, es ist ein Versuch, xml/html Dokument aus Daten zu machen. In diesem Fall müssen die Originaldaten zu sehen, die zuvor von Browser-Interpretation, und es kann mit dieser einfachen Funktion sein:

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

als, werden die Daten erfasst:

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

Nun ist es Zeit, um sich dem Bildschirm zu nähern und alle Details zu untersuchen. In meinem Fall gab es einige Tags wie folgt aus:

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

können Sie sehen, das Zitat am Ende der Stildeklaration fehlt (es spät in der Nacht passiert Codierung). Wenn der Browser also versucht, das XML neu zu erstellen und eine eigene Interpretation zu erstellen, wird die Analyse beim Versuch, den Fehler zu finden, unübersichtlich. Ich würde in Safari und Firefox testen, also ist es nicht Browser-Fehler, sondern Browser-AI-Beschränkung. Ich muss den Originalcode sehen, AI nur in Filmen!