adriantnt
Quiero incluir código html dentro de las variables php. Recuerdo que había una manera de definir código html dentro de una variable php, algo parecido a esto:
<?php $my_var = { ?>
<div>SOME HTML</div>
<?php } ?>
lo encontre en PHP.net
pero no puedo encontrarlo ahora. Había algo más en lugar de la "{"
pero no recuerdo exactamente. Estoy buscando escribir directamente el código html como arriba, así que NO así: $my_var="<div>SOME HTML</div>";
¿Algunas ideas?
Prueba esto:
<?php ob_start(); ?>
<div>HTML goes here...</div>
<div>More HTML...</div>
<?php $my_var = ob_get_clean(); ?>
De esta forma, conservará el resaltado de sintaxis para HTML.
-
Esto debería estar en la parte superior. Mucho más limpio que EOD
– KroniK907
17 de diciembre de 2015 a las 2:11
-
Este método parece funcionar mejor si tiene un código php adicional dentro del html.
–Steven Carlton
10 de febrero de 2019 a las 19:31
-
¡Gran solución!
-Paul Feakins
11 de junio de 2021 a las 15:49
-
Algunas referencias o elaboración de las funciones aquí serían útiles.
– Krow
15 de mayo a las 4:19
<?php
$my_var = <<<EOD
<div>SOME HTML</div>
EOD;
?>
Se llama heredoc sintaxis.
-
Esperaba que Dreamweaver me ayudara a formatear correctamente la sintaxis html, pero veo que no lo reconoce como html 😐 No puedo cerrar esa etiqueta php antes de html y abrirla nuevamente después del html, ¿puedo?
– adrianTNT
5 de septiembre de 2011 a las 9:08
-
No, desafortunadamente, no puede :-/ Puede usar ob_start() y ob_get_clean() para comenzar a guardar el búfer de salida y luego recuperar el búfer en una variable. Sin embargo, eso se considera un truco (feo).
– Emil Vikström
5 de septiembre de 2011 a las 9:11
-
No se considera truco feo. Úsalo si te facilita el trabajo y te hace sentir mejor. Nadie notará esa pequeña diferencia de velocidad.
– Rok Kralj
5 de septiembre de 2011 a las 9:27
-
Rok, no estoy hablando de rendimiento. Estoy hablando de arquitectura de software. Usar el búfer de salida para obtener datos en variables no es un enfoque limpio y fácil de mantener.
– Emil Vikström
5 de septiembre de 2011 a las 9:44
-
ob_start() parece ser una solución muy extrema en cualquier caso, y puedo imaginar todo tipo de errores con cargas de página, scripts, etc.
– adrianTNT
9 de septiembre de 2011 a las 7:47
Guarde su HTML en un archivo separado: example.html.
Luego lea el contenido del archivo en una variable
$my_var = file_get_contents('example.html');
-
Sí, este método también funcionaría para el propósito inicial que tenía.
– adrianTNT
13 de diciembre de 2015 a las 13:22
Si no le importa el resaltado de sintaxis HTML, puede definir una variable normal. Tampoco tiene que escapar de HTML porque PHP le permite usar comillas simples para definir una variable, lo que significa que puede usar comillas dobles dentro de su código HTML.
$html="
<p>
<b><i>Some html within a php variable</i><b>
</p>
<img src="https://stackoverflow.com/questions/7305869/path/to/some/boat.png" alt="This is an image of a boat">
" ;
Funciona perfectamente para mí, pero supongo que es una cuestión de preferencia e implementación.
RedSparr0w
Si va a hacer eco del contenido, otra forma de hacerlo es mediante el uso de funciones,
esto también tiene el beneficio adicional de que los programas usan resaltado de sintaxis.
function htmlContent(){
?>
<h1>Html Content</h1>
<?php
}
htmlContent();
?>
SR Panda
Para definir código HTML dentro de una variable PHP:
1) Usar una función (Ref: @RedSparr0w)
<?php
function htmlContent(){
?>
<h1>Html Content</h1>
<?php
}
?>
2. Almacenar dentro de una variable
$var = htmlContent();
upspato
Para agregar a las pocas respuestas que mencionan usar una función en la var. ¿puedo sugerir un función anónima. No soy un asistente de php, así que corríjame si me equivoco, pero me imagino que funciona de la siguiente manera:
<?php
$my_var = function(){
?>
<div>SOME HTML</div>
<?php
};
// Display content
$my_var();
Para extender esto aún más, si se necesita otro contenido php en el html, se puede pasar de diferentes maneras.
$method1 = "Title"; // Will be the same for every instance
$method2 = "default content"; // Can change for each instance
$my_var = function($unique=$method2/*set default*/) use ($method1){
?>
<h1><?php echo $prop1; ?></h1>
<div><?php echo $unique; ?></div>
<?php
};
// Display content
$my_var();
//returns
Título
contenido predeterminado
$my_var("Some unique content");
//returns
Título
Algunos contenidos únicos