Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP im HTML Code

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ich versteh nicht wozu das gut sein soll. Du kannst ja auch einfach nur schreiben:
    PHP-Code:
    <?= htmlspecialchars($id?>
    Man muss die Sache ja nicht komplizierter machen, als sie ist.

    Und wenn du Werte in einer URL einfügen willst, solltest du diese mit urlencode() behandeln oder gleich http_build_query() verwenden. htmlspecialchars() ist dafür ungeeignet.

    Kommentar


    • #17
      Zitat von SteffMB Beitrag anzeigen
      Hallo zusammen,

      mal wieder eine Frage von mir. Wie bringe ich PHP am besten im HTML Code unter?

      Beispiel 1
      So:
      PHP-Code:
      <?php
      echo '<h1>Nummer ';
      echo 
      htmlspecialchars($id);
      echo 
      ' bearbeiten </h1>';
      ?>
      oder so:
      PHP-Code:
      <h1>Nummer <?= htmlspecialchars($id)?> bearbeiten</h1>
      Beispiel 2
      So:
      PHP-Code:
      <?php
      echo '<a data-ajax="false" href="nummer.php?id='.$id.'" class="ui-btn ui-icon-eye ui-btn-icon-left">Details zu Nummer '.$id.'</a>';
      ?>
      oder so:
      PHP-Code:
      <a data-ajax="false" href="nummer.php?id=<?= htmlspecialchars($id)?>" class="ui-btn ui-icon-eye ui-btn-icon-left">Details zu Nummer <?= htmlspecialchars($id)?></a>
      Gibt es da irgendwelche Vor- und Nachteile oder ist es im Prinzip völlig egal?

      LG Stefan
      Es wird beides das gleiche Ergebnis produzieren.
      Dem PHP -Parser ist das in der Tat egal.
      Was für Dich besser ist, also mit was Du besser zurechtkommst, ist einzig und alleine Deine Sache. Da kann Dir hier jeder Freak was anders erzählen. Aber am Ende ist es nur das, was er für sich als das Beste ansieht. Aber Du musst damit klarkommen. Solange Dein Code HTML konform ist, wird der Browser Dir genau das zeigen, was Du möchtest. Ob das für manche genial oder komplett daneben ist, interessiert weder den Parser noch den Browser.

      Kommentar


      • #18
        Hier mal Varianten ohne Escape-Müll:
        PHP-Code:
        $htmlTemplate = <<<HTML
        <a data-ajax="false" href="nummer.php?id={$id}" class="ui-btn ui-icon-eye ui-btn-icon-left">Details zu Nummer {$id}</a>
        HTML;

        echo 
        $htmlTemplate

        PHP-Code:

        // Vorlage
        $htmlTemplate = <<<'HTML'
        <a data-ajax="false" href="nummer.php?id={ID}" class="ui-btn ui-icon-eye ui-btn-icon-left">Details zu Nummer {ID}</a>
        HTML;

        // Daten
        $htmlEntities = [
            
        'ID' => 123// ... Liste von Werten
        ];

        // Verarbeitung
        foreach ( $htmlEntities as $templateMark => $htmlEntity )
        {
            
        $htmlTemplate str_replace"{{$templateMark}}"htmlspecialchars$htmlEntity ), $htmlTemplate );
        }

        // Ausgabe
        echo $htmlTemplate

        Hier noch eine Variante, welche komplett ohne Marker und Variablen im HTML auskommt. Ist aber etwas komplexer und hier auch nur prototypisch zur Demonstration vereinfacht. Man könnte hieraus eine schöne TemplateEngine bauen.

        PHP-Code:

        <?php

        // Vorlage
        $htmlTemplate = <<<'HTML'
        <a data-ajax="false" href="nummer.php?id=" class="ui-btn ui-icon-eye ui-btn-icon-left">Details zu Nummer </a>
        HTML;

        // Daten
        $htmlEntities = [
            
        '/a/@href' => 123// ... Liste von Selectoren mit ihren Werten
            
        '/a'       => 123
        ];

        // Verarbeitung
        $dom = new DOMDocument'1.0''utf-8' );
        $dom->loadXML$htmlTemplate );

        $xpath = new DOMXPath$dom );

        foreach ( 
        $htmlEntities as $selector => $htmlEntity )
        {

            
        $nodeList $xpath->query$selector );

            if ( 
        $nodeList )
            {
                foreach ( 
        $nodeList as $node // Schleife, da auch mehrere Treffer möglich sind.
                
        {
                    
        $selectedNode            $node;
                    
        $text                    $selectedNode->nodeValue;
                    
        $selectedNode->nodeValue $text $htmlEntity// Die eigentliche Manipulation des Templates findet hier statt
                
        }
            }

        }

        // Nachbereitung
        $html $dom->saveXML();
        $html str_replace'<?xml version="1.0"?>'''$html );

        // Ausgabe
        echo $html;
        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #19
          Alpha

          Deine Ersten beiden Varianten gehen total in die Hose, sobald id kein ganzzahliger Wert mehr ist. URL queries müssen speziell behandelt werden. Siehe urlencode dazu.
          Warum du zudem htmlentities verwendest leuchtet mir nicht ganz ein, da htmlspecialchars die bessere Variante darstellt.

          Ob ein Anfänger mit deiner dritten Variante zurecht kommt mag zumindest angezweifelt werden, ich würde es so nicht machten wollen.

          Kommentar


          • #20
            Zitat von protestix Beitrag anzeigen
            Alpha

            URL queries müssen speziell behandelt werden. Siehe urlencode dazu.
            ...
            htmlspecialchars
            ...
            Da hast Du recht. Hab das tatsächlich verwechselt Danke für den Hinweis, der war sehr gut.
            Muss aber gestehen, dass ich mit der URL mal wieder das blödeste Beispiel rausgefischt hatte.

            In einem guten Entitätensystem würde ich dann alles als Objekte vorliegen haben statt stupider Arrays und
            entsprechend der Interfaces wäre die Auswertung dynamischer, aber so weit wollte ich jetzt nicht gehen.

            Ich arbeite privat fast garnicht mehr mit Arrays, sondern fast nurnoch mit Objekten.
            bitcoin.de <- Meine Freelancerwährung

            Kommentar

            Lädt...
            X