[PHP]  bij print vanuit txt-file

Pagina: 1
Acties:
  • 218 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Preatorium
  • Registratie: September 2001
  • Laatst online: 04-08 15:38
Op mijn website geef ik random om de 15 sec. een quote weer vanuit een tekstbestand. Dit doe ik met de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<cite>
    <?php

      // Get a random quote.
      $file = "./downloads/quotes.txt";
      if(!file_exists($file) || !($fp = fopen($file, "r"))) {
        die("Unable to open file $file.");
      }

      // Seek to random position in the file.
      $size = filesize($file);
      srand((double)microtime()*1000000);
      $randval = rand(0, $size);
      fseek($fp, $randval);

      // Throw away partial line.
      $quote = fgets($fp, 1024);

      // Read next whole line.
      $quote = trim(fgets($fp, 1024));

      // If EOF wrap to begining of file.
      if(empty($quote)) {
        fseek($fp, 0);
        $quote = trim(fgets($fp, 1024));
      }
      fclose($fp);

      // Print the quote.
      print("$quote");

    ?>
    </cite>


Probleem is dat er  weergegeven wordt op de online pagina. Ik ben alles bijlangs gegaan maar kan niet ontdekken waar deze tekens vandaan komen. De tekens staan niet in mijn PHP-bestand en niet in het tekstbestand met quotes, maar enkel in de HTML-versie online...

Iemand een idee? Ligt het wellicht aan de print functie? Mijn webhoster werkt trouwens met PHP 4.3.1.

Remember this; very little is needed to make a happy life. ~ Marcus Aurelius Antoninus (121-180)


Acties:
  • 0 Henk 'm!

  • .daan
  • Registratie: Januari 2002
  • Laatst online: 23-09-2023

.daan

{visibility:hidden;}

Ik weet helaas geen oplossing, ben niet echt thuis in php, maar ik zie wel dat dit probleem alleen optreedt met Firefox, en niet met IE. Misschien heb je hier iets aan?

public void ik()


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ze komen al vóór je DOCTYPE etc, dus het lijkt me sowieso niet een issue met het bovenstaande script.

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Het zit tussen <body> en <table ... >.

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Daos schreef op zondag 13 november 2005 @ 14:03:
Het zit tussen <body> en <table ... >.
Bij mij niet?

gerjan@server ~ $ telnet www.gerwinwoelders.nl 80
Trying 217.22.64.74...
Connected to www.gerwinwoelders.nl.
Escape character is '^]'.
GET /quotes.php HTTP/1.1
Host: www.gerwinwoelders.nl

HTTP/1.1 200 OK
Date: Sun, 13 Nov 2005 13:00:56 GMT
Server: Apache/1.3.27 (Unix) FrontPage/5.0.2.2510
Transfer-Encoding: chunked
Content-Type: text/html

2cd
[b][/]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Random Quotes</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta http-equiv="refresh" content="15" />
  <link rel="stylesheet" href="/stylesheets/base/ocean.css" type="text/css" />
</head>

<body>

<table width="100%" border="0" cellspacing="1" cellpadding="1">
  <tr>
    <td align="center" valign="middle" class="quotes"><cite>
    A man without a religion is like a fish without a bicycle. <br /> - Vique's Law    </cite></td>
  </tr>
</table>

</body>
</html>
0

Connection closed by foreign host.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Zo komt het van je server:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Header:
HTTP/1.1�200�OK(CR)(LF)
Date:�Sun,�13�Nov�2005�13:03:38�GMT(CR)(LF)
Server:�Apache/1.3.27�(Unix)�FrontPage/5.0.2.2510(CR)(LF)
Connection:�close(CR)(LF)
Transfer-Encoding:�chunked(CR)(LF)
Content-Type:�text/html(CR)(LF)
(CR)(LF)

Content:
2e7(CR)(LF)
(EF,BB,BF)<!DOCTYPE�html�PUBLIC�"-//W3C//DTD�XHTML�1.0�Transitional//EN"(CR)(LF)
����"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">(CR)(LF)
(HT)(CR)(LF)
<html�xmlns="http://www.w3.org/1999/xhtml">(CR)(LF)
<head>(CR)(LF)
��<title>Random�Quotes</title>(CR)(LF)
��<meta�http-equiv="Content-Type"�content="text/html;�charset=iso-8859-1"�/>(CR)(LF)
��<meta�http-equiv="refresh"�content="15"�/>(CR)(LF)
��<link�rel="stylesheet"�href="/stylesheets/base/ocean.css"�type="text/css"�/>(CR)(LF)
</head>(CR)(LF)
(CR)(LF)
<body>(CR)(LF)
(CR)(LF)
<table�width="100%"�border="0"�cellspacing="1"�cellpadding="1">(CR)(LF)
��<tr>(CR)(LF)
����<td�align="center"�valign="middle"�class="quotes"><cite>(CR)(LF)
����"Religion�without�science�is�blind.�Science�without�religion�is�lame."�<br�/>�-�Albert�Einstein����</cite></td>(CR)(LF)
��</tr>(CR)(LF)
</table>(CR)(LF)
(CR)(LF)
</body>(CR)(LF)
</html>(CR)(LF)
0(CR)(LF)
(CR)(LF)

Acties:
  • 0 Henk 'm!

  • Preatorium
  • Registratie: September 2001
  • Laatst online: 04-08 15:38
Daar gaat het dus om, maar hoe komen deze tekens daar? :? Vreemd dat het niet in IE te zien is en enkel in FF. De tekens staan niet in mijn HTML / PHP broncode. De server genereerd het o.i.d.

Remember this; very little is needed to make a happy life. ~ Marcus Aurelius Antoninus (121-180)


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Byte Order Mark.
The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters "" in most text editors and web browsers not prepared to handle UTF-8.
Ik gok dat je je textfile op hebt geslagen als UTF-8, maar je pagina zelf in ISO-8859-1 weergeeft.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Preatorium
  • Registratie: September 2001
  • Laatst online: 04-08 15:38
-NMe- schreef op zondag 13 november 2005 @ 14:13:
Byte Order Mark.

[...]


Ik gok dat je je textfile op hebt geslagen als UTF-8, maar je pagina zelf in ISO-8859-1 weergeeft.
You're the best! 8) Heb de charset op UTF-8 gezet weg zijn de (* irritante *) tekens! Super.
The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters "" in most text editors and web browsers not prepared to handle UTF-8.
Firefox (ook 1.5 RC2) is dus niet voorbereid op UTF-8.

[ Voor 26% gewijzigd door Preatorium op 13-11-2005 14:19 ]

Remember this; very little is needed to make a happy life. ~ Marcus Aurelius Antoninus (121-180)


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Firefox is wel voorbereid op UTF-8, alleen moet je die dan wel vertellen dat de inhoud in UTF-8 is, anders denkt Firefox dat de eerste tekens gewoon doodnormale ISO-8859 tekens zijn :)

Acties:
  • 0 Henk 'm!

  • Dutchmega
  • Registratie: September 2001
  • Niet online
Preatorium schreef op zondag 13 november 2005 @ 14:16:
[...]


You're the best! 8) Heb de charset op UTF-8 gezet weg zijn de (* irritante *) tekens! Super.


[...]


Firefox (ook 1.5 RC2) is dus niet voorbereid op UTF-8.
Firfox is prima voorbereid op UTF-8. Je moet alleen de pagina ook weergeven in UTF-8. Dat houdt in, 'Content-Type: UTF-8' meezenden :)

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Dutchmega schreef op zondag 13 november 2005 @ 15:29:
[...]

Firfox is prima voorbereid op UTF-8. Je moet alleen de pagina ook weergeven in UTF-8. Dat houdt in, 'Content-Type: UTF-8' meezenden :)
UTF is een character set, géén content-type hoor 8)7

Ik zou je toch aanraden om zoiets te sturen: Content-Type: text/html; charset=UTF-8 :P

Acties:
  • 0 Henk 'm!

  • Preatorium
  • Registratie: September 2001
  • Laatst online: 04-08 15:38
Dat is ook exact wat de nodige verandering bracht:

code:
1
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Simpel eigenlijk maar je moet het maar weten... via EF,BB,BF.

Verschil is dat IE dit zelf detecteert en het bij FF netjes (zoals het eigenlijk hoort voor de netheid) het moet aangeven.

[ Voor 36% gewijzigd door Preatorium op 13-11-2005 19:26 ]

Remember this; very little is needed to make a happy life. ~ Marcus Aurelius Antoninus (121-180)


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Netter is toch om het in je HTTP headers mee te geven. Dat is zeker noodzakelijk indien bijvoorbeeld je webserver zo is geconfigureerd dat deze al standaard een charset meegeeft die afwijkt.
HTTP headers gaan nog altijd voor een eventuele http-equiv in meta-tags. Een content-type opgeven in een meta-tag is helemaal nutteloos aangezien de browser al heeft moeten bepalen wat het is nog voordat de meta-tags geparsed zijn.

[ Voor 39% gewijzigd door crisp op 13-11-2005 20:05 ]

Intentionally left blank

Pagina: 1