Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] print_r ($abc) (https://www.delphipraxis.net/145869-%5Bphp%5D-print_r-%24abc.html)

MrSpock 9. Jan 2010 21:27


[PHP] print_r ($abc)
 
Hallo,

print_r sollte doch bei der Ausgabe eines Arrays jedes Element in einer eigenen Zeile anzeigen.
Woran kann es liegen, wenn alle Elemente nebeneinander angezeigt werden?

Daniel 9. Jan 2010 21:29

Re: [PHP] print_r ($abc)
 
Ich fürchte, das liegt an der Art und Weise, wie die Browser den HTML-Code interpretieren. Ich nutze meist
echo "<pre>", print_r($abc), "</pre>";

himitsu 9. Jan 2010 21:31

Re: [PHP] print_r ($abc)
 
Zitat:

Zitat von MrSpock
Woran kann es liegen, wenn alle Elemente nebeneinander angezeigt werden?

Nebeneinander in der HTML-Ausgabe des Browsers oder im Seitenquelltext?

Die webbrowser sehen Zeilenumbrüche (Linebreak) normal nur als Leerzeichen an (
= Zeilenumbruch )

[edit] keine Redbox :shock:

MrSpock 9. Jan 2010 21:36

Re: [PHP] print_r ($abc)
 
Hallo,

also mit der Methode von Daniel funktioniert es. Aber wieso? Warum überschreibt der Browser (übrigens FF genauso wie Safari) die Formatierung von print_r?

@himitsu: In der Ausgabe im Browser.

himitsu 9. Jan 2010 21:40

Re: [PHP] print_r ($abc)
 
Zitat:

Zitat von MrSpock
Warum überschreibt der Browser (übrigens FF genauso wie Safari) die Formatierung von print_r?

Zitat:

Zitat von himitsu
Die Webbrowser sehen Zeilenumbrüche (Linebreak) normal nur als Leerzeichen an (
= Zeilenumbruch )

Weil halt die Formatierungen (Leer-/Trenn-/Formatierungszeichen) im Quelltext laut HTML irrelevant sind
(mehrere Leerzeichen werden auch nur als Eines angezeigt) und mit den Formatierungen in der Ausgabe nichts zu tun haben.

Matze 9. Jan 2010 21:40

Re: [PHP] print_r ($abc)
 
Ein Browser ignoriert eben Leerzeichen, Return etc. und interpretiert nur den HTML-Code. Das ist aber auch gut so. Sonst würde bsp. ordentlich eingerückter HTML-Code im Browser auch entsprechend eingerückt dargestellt werden und das Design komplett durcheinander werfen.
Mir den <pre>-Tags werden auch diese Zeichen berücksichtigt und ausgegeben. Das ist schon korrekt.

MrSpock 9. Jan 2010 21:47

Re: [PHP] print_r ($abc)
 
Hallo,

danke für die Erklärung. Ich habe vor 2 oder 3 Jahren, als ich mich das erstemal mit PHP beschäftigt habe mit dem "PHP 4 Das Praxisbuch" gearbeitet. Dort wurde ein array auch immer mit print_r oder var_dump ausgegeben. In den Beispielen wird das HTML Tag <pre> aber nicht benutzt. In der Ausgabe, die im Buch abgedruckt ist, stehen die Elemente aber trotzdem untereinander und ich bin mir ziemlich sicher, dass mir die Ausgabe wie im Buch gezeigt dargestellt wurde. (Sonst hätte ich schon damals gefragt. :gruebel: )

BUG 9. Jan 2010 21:58

Re: [PHP] print_r ($abc)
 
Dann hat hast du damals evtl. kein HTML ausgegeben und der Browser hat die Ausgabe als reinen Text interpretiert.
Dann sieht man auch die Zeilenumbrüche.


MfG,
Bug

Valle 9. Jan 2010 22:11

Re: [PHP] print_r ($abc)
 
Siehe auch die Funktion nl2br, die genau für solche Probleme gedacht ist. :-)
Leider kann man sie auf die Funktion nicht anwenden, da print_r die Ausgabe nicht zurückgibt, sondern direkt ausgibt. :?

Edit:// print_r unterstützt seit PHP 4.3.0 auch einen zweiten Paramter, der obiges doch ermöglicht:

Code:
echo nl2br(print_r($var, True));
Liebe Grüße,
Valle

MrSpock 9. Jan 2010 22:14

Re: [PHP] print_r ($abc)
 
Hallo Bug,

das könnte prinzipiell schon sein, aber wie kann ich nicht HTML Code ausgeben? Ich meine der Code sieht ja so aus:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
            function ShowHalloWelt() {
           
            $abc=array(1=>"Hallo", "Welt"=>"Welt",3);
            print '<pre>';
            print_r($abc);
            print_r($b);
            print '
';
         
            print '</pre>';
            }
            ShowHalloWelt();
         ?>
    </body>
</html>


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz