2012-09-21 14 views
21

Ich brauche eine ganze Reihe von PHP und HTML-Echo.PHP mehrzeiligen String mit PHP

Ich habe bereits versucht, das offensichtlich, aber es funktioniert nicht:

<?php echo ' 
<?php if (has_post_thumbnail()) { ?> 
     <div class="gridly-image"><a href="<?php the_permalink() ?>"><?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false)));?></a> 
     </div> 
     <?php } ?> 

     <div class="date"> 
     <span class="day"> 
     <?php the_time('d') ?></span> 
     <div class="holder"> 
     <span class="month"> 
      <?php the_time('M') ?></span> 
     <span class="year"> 
      <?php the_time('Y') ?></span> 
     </div> 
    </div> 
    <?php } ?>'; 
?> 

Wie kann ich es tun?

+4

Versuchen Sie, buchstäblich PHP-Code Echo? –

+0

gut neben den offensichtlichen Probleme mit den unescaped Zitate sollten Sie auch alle < and > Tags zu ihrer entsprechenden HTML-Code konvertieren < > – transilvlad

+1

Die meisten Leute, die diese Frage stellen würde nach HEREDOC suchen. Vielleicht möchten Sie diese Antwort akzeptieren. – Archonic

Antwort

20

Sie brauchen nicht zur Ausgabe php tags:

<?php 
    if (has_post_thumbnail()) 
    { 
     echo '<div class="gridly-image"><a href="'. the_permalink() .'">'. the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false))) .'</a></div>'; 
    } 

    echo '<div class="date"> 
       <span class="day">'. the_time('d') .'</span> 
       <div class="holder"> 
       <span class="month">'. the_time('M') .'</span> 
       <span class="year">'. the_time('Y') .'</span> 
       </div> 
      </div>'; 
?> 
+1

sieht gut aus mir - danke – Matt

28

Sie können nicht PHP-Code ausführen innerhalb eines Strings so. Es funktioniert einfach nicht. Wie gut, wenn man „out“ von PHP-Code (?>), einen beliebigen Text außerhalb der PHP-Blöcke sind ohnehin als Ausgang, so dass es keine Notwendigkeit für die echo Aussage.

Wenn Sie mehrzeilige Ausgabe von mit einem Stück von PHP-Code zu tun brauchen, sollten Sie eine HEREDOC mit:

<?php 

$var = 'Howdy'; 

echo <<<EOL 
This is output 
And this is a new line 
blah blah blah and this following $var will actually say Howdy as well 

and now the output ends 
EOL; 
0

Die Eine interne Menge einfacher Anführungszeichen in Ihrem Code löscht die Zeichenfolge. Immer wenn Sie ein einzelnes Anführungszeichen treffen, wird die Zeichenfolge beendet und die Verarbeitung fortgesetzt. Sie wollen so etwas wie:

$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run'; 
15

Verwenden Heredocs zur Ausgabe muli-line Zeichenketten enthalten Variablen. Die Syntax lautet ...

Der "HEREDOC" -Teil ist wie die Zitate und kann alles sein, was Sie wollen. Das End-Tag muss das einzige Ding auf seiner Zeile sein, d. H. Kein Leerzeichen davor oder danach, und muss in einem Doppelpunkt enden. Für weitere Informationen check out the manual.

1

Um dies zu tun, müssen Sie alle ' Zeichen in Ihrer Zeichenfolge entfernen oder ein Escape-Zeichen verwenden. Wie:

<?php 
    echo '<?php 
       echo \'hello world\'; 
      ?>'; 
?> 
0

Verwenden Sie die show_source(); Funktion von PHP. Weitere Informationen finden Sie unter show_source. Das ist eine bessere Methode, denke ich.

0

Eine andere Möglichkeit wäre, die if mit einem Doppelpunkt zu verwenden und eine endif anstelle der Klammern:

<?php if (has_post_thumbnail()): ?> 
    <div class="gridly-image"> 
     <a href="<?php the_permalink(); ?>"> 
     <?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false))); ?> 
     </a> 
    </div> 
<?php endif; ?> 

<div class="date"> 
    <span class="day"><?php the_time('d'); ?></span> 
    <div class="holder"> 
     <span class="month"><?php the_time('M'); ?></span> 
     <span class="year"><?php the_time('Y'); ?></span> 
    </div> 
</div>