PHP Merkwürdige Leerzeilen

aggitron

Commander
Registriert
Jan. 2006
Beiträge
2.077
Hallo,

ich habe zwei ganz einfache PHP Dateien mit unterschiedlichem Inhalt.
In beiden Dateien werden mit dem gleichen Aufrufen eine header.template.php und eine footer.template.php eingebunden.

Die Header Datei enthält ganz rudimentäre html Befehle:

Code:
<html>
	<head>
		<title>Titel</title>
	</head>
	<body>
		<h2>Überschrift</h2>
		<p>Text</p>

Das kuriose ist, im Browser werden auf der einen Seite zwei Leerzeilen direkt am Anfang der Seite ausgegeben und auf der anderen Seite nicht. Die Leerzeilen sind natürlich ungewollt.
Im Editor (Notepad++) werden keine Leerzeilen angezeigt. Die Webkonsole zeigt sie im Inspektor auch nicht an. Nur wenn man sich im Firefox den Seitenquelltext ansieht zeigt er die Leerzeilen an.
Zur Verdeutlichung habe ich noch zwei Screenshots angehangen.

Bin mittlerweile ein wenig ratlos und dankbar für jeden Tipp.
 

Anhänge

  • web2.png
    web2.png
    6,1 KB · Aufrufe: 224
  • web1.png
    web1.png
    5,8 KB · Aufrufe: 205
alles vor dem '<?php' in den php Dateien wird als html bzw. als auszugebend angesehen, genauso wie alles nach '?>'

wenn da eine Leerzeile drin ist wird die als Leerzeile ausgegeben...
 
Mal abgesehen davon das da keine Leerzeile drin ist, wieso sollte die dann noch über dem öffnenden html Tag ausgegeben werden?
 
rufst du direkt die header.template.php datei mit dem browser auf oder eine z.b. index.php die dann die template.php nachlädt?

du musst in allen php dateien "auf dem weg" nachschauen ob da eine leerzeile ausserhalb der php tags ist...
 
Ok, ist verstanden. Aber die php die aufgerufen wird sieht so aus:

Code:
<?php
header("Content-Type: text/html; charset=utf-8");
include_once("classes/bbcodetemplates/MatchReport.bbcode.php");

$matchId = Utils::getParam("matchId", null);
$showMatchReport = Utils::getParam("showMatchReport", 0);
$showEvents = Utils::getParam("showEvents", 0);
$showPossesion = Utils::getParam("showPossesion", 0);
$showRatings = Utils::getParam("showRatings", 0);
$showRatingsCompare = Utils::getParam("showRatingsCompare", 0);

if ($matchId  == "")
{
	$matchId = null;
}

$action = Utils::getParam("action");
$bbCode = "";

if ($action == "generate")
{
	$matchReportTemplate = new MatchReport($matchId, $showMatchReport, $showEvents, $showPossesion, $showRatings, $showRatingsCompare);
	$bbCode =  $matchReportTemplate->getBBCode();
}

include("templates/header.template.php");
include("templates/navigation.template.php");
include("templates/match.template.php");
include("templates/footer.template.php");
?>
 
Daran liegt es tatsächlich!

Die Datei hat allerdings ein paar Zeilen (besteht aber auch aus php Code getaggt von <?php...?>). Wird ein Stück dauern bis ich die durch habe...

/edit
Ich habe den Übertäter gefunden. Es liegt an einer kleinen PHP Datei. Diese ist UTF-8 kodiert. Aus meiner Sicht ist das auch korrekt. Wenn ich die Kodierung auf ANSI ändere, verschwinden die Leerzeilen. Wie ist das zu verstehen?

Damit durch die Änderung der Kodierung werden dann auch die Umlaute im Browser nicht angezeigt.
 
Zuletzt bearbeitet:
Es liegt trotzdem am BOM. Wer unter Windows arbeitet muss immer und überall damit rechnen, dass ihm die verschiedenen Editoren einen BOM reinballern.... sogar Notepad++
 
Jepp, die BOM wird vom Editor erzeugt. Es ist wichtig als UTF8 ohne BOM zu speichern. (Keine Ahnung wer eigentlich überhaupt auf die Idee kam das UTF8 mit BOM sinnvoll wäre... die braucht man wenn dann höchstens für UTF16 oder UTF32)
 
Nun ja, im Zweifel: Microsoft... denn nur unter Windows hatte ich immer wieder BOM-Probleme.
 
Zurück
Oben