Toon posts:

Tweakers: newlines?

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

Verwijderd

Topicstarter
Hey,

misschien is deze vraag alleen voor Femme :?, maar ik post 'm toch ff hier.

Er zitten geen newlines in de bron van tweakers.net, als je 'm bekijkt staat de hele source op een paar regels.

Ik heb dit ook al wel 's voor elkaar gekregen, met het volgende stukje php, maar zoals je zit is 't nogal gebrekkig, je kunt er nl. alleen maar een file mee uitlezen en dan uitspugen zonder newlines. Als je een grotere site draait waar je meerdere dingen uit een Mysql db haalt en dan pas uitspuugt, en ook nog wat files include, dan kun je deze niet echt gebruiken.
Ik vroeg me af hoe jullie dat deden.

Dit is dat stukje code dat ik gebruikte:
PHP:
1
2
3
4
5
6
7
8
9
<?
&amp;lt;? 
$nonewlines = file ("bla.html"); 
while (current ($nonewlines)) { 
echo ereg_replace("\n","",current ($nonewlines)); 
next ($nonewlines); 
} 
?&amp;gt;
?>

  • Femme
  • Registratie: Juni 1999
  • Laatst online: 12:56

Femme

Hardwareconnaisseur

Official Jony Ive fan

Je kunt de linefeeds uit de inhoud van ob_get_contents aan het eind van je script replacen (str_replace is bdw sneller dan ereg_replace).

http://www.php.net/manual/function.ob-get-contents.php

HTTP compressie werkt ook op die manier:
PHP:
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
36
37
38
39
<?
function GzDocOut($level=9){ 

    global $debug;
    
    if(!isset($debug)) {
        $debug=0;
    }

     $ENCODING = CheckCanGzip(); 
     if ($ENCODING){ 
         print "\n<!-- Use compress $ENCODING -->\n"; 
         $Contents = ob_get_contents(); 
         ob_end_clean(); 
         if ($debug){ 
             
                $uncompress=strlen($Contents);
                $compress=strlen(gzcompress($Contents,$level));
                $ratio=(round(($uncompress/$compress)*100)/100);
         
             $s = "<script>setTimeout(\"window.status='Not compress length: $uncompress | Compressed length: $compress | Ratio: 1/$ratio | Level: $level';\", 2500);</script>";
             $Contents .= $s; 
         }
         header("Content-Encoding: $ENCODING");          
         print "\x1f\x8b\x08\x00\x00\x00\x00\x00"; 
         $Size = strlen($Contents); 
         $Crc = crc32($Contents); 
         $Contents = gzcompress($Contents,$level); 
         $Contents = substr($Contents, 0, strlen($Contents) - 4); 
         print $Contents; 
         print pack('V',$Crc); 
         print pack('V',$Size); 
         exit; 
     }else{ 
         ob_end_flush(); 
         exit; 
     } 
 } 
?>

Verwijderd

Topicstarter
hmm ik heb nog nooit met ob.... gewerkt, ik zal 't 's ff doorlezen op php.net

of is het zo dat ik gewoon bovenin m'n file kan starten met:

ob_start()

en dan op het einde van de file een replace uitvoeren op ob_get_contents?

Verwijderd

Topicstarter
Hmm ik heb het nu zo gedaan, nog ff gewoon met ereg_replace om te checken of het werkt,

bovenin m'n file:
ob_start();

helemaal onderin m'n file:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
&amp;lt;?
$Contents = ob_get_contents(); 
ob_end_clean(); 
$nonewlines = $Contents; 
while (current ($Contents)) { 
echo ereg_replace("\n","",current ($Contents)); 
next ($Contents); 
}
exit;
?&amp;gt;
?>

Maar nu krijg ik deze foutmelding:

Variable passed to current() is not an array or object in ..........

Komt dit omdat ik het eerst uit een file las?
Ik zou nu nl. niet weten hoe ik 't moet aanpassen zodat hij het uit de variabele $Contents lees ipv uit een html file....(zie topic)....

Kan deze topic worden verplaatst naar het webdev forum?

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Probeer dit eens:

:
PHP:
1
2
3
4
5
6
7
<?
&amp;lt;?
$Contents = ob_get_contents(); 
ob_end_clean(); 
print strtr($Contents, "\n", " ");
?&amp;gt;
?>

Verwijderd

Topicstarter
werkt niet :'(
Pagina: 1