while w3schools w3school w3s variable php string

w3schools - ¿Hay una mejor manera de escribir cadenas HTML en PHP?



w3school php if (9)

Me encuentro escribiendo muchas funciones en PHP que devuelven código HTML. Pueden verse algo como esto:

function html_site_head() { return " <div id=/"site_header/"> <div id=/"site_header_inner/"> <div id=/"site_header_logo/"></div> <div id=/"site_header_countdown/">BARE XX DAGER IGJEN</div> </div> </div> "; }

Ahora puedo jurar que he visto mejores formas de escribir cadenas largas en PHP. Me gusta la manera en que Python lo hace:

return """ <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div> """

Como no tienes que escapar de las comillas. Una alternativa es usar comillas simples, pero eso significa que no se deben usar variables de PHP directamente en la cadena. Juro que he visto algo como esto en PHP:

return <<< <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div>

O algo similar. ¿Podría alguien refrescar mi memoria en esto?

Gracias


A veces, por alguna razón, sucede que PHP o Javascript o algún travieso insertan mucha barra invertida. La función ordinaria no se da cuenta de eso. Por lo tanto, es necesario que el bit "inflar":

<?php function removeslashes($string) { $string=implode("",explode("//",$string)); return stripslashes(trim($string)); } /* Example */ $text="My dog don////////////////'t like the postman!"; echo removeslashes($text); ?> RESULT: My dog don''t like the postman!

Esta película me ha servido muy bien, porque tuve este problema antes.

Fuente: here


Como dijo Haim, los heredoc son el camino a seguir.

Si te encuentras escribiendo líneas simples, recuerda (o te das cuenta) de que puedes usar comillas simples para los atributos HTML (no creas que alguien que intenta decirte que no son válidos).

Entonces, por ejemplo:

$html = "<div id=''blah''>$contents</div>";



Me gusta sugerir esta biblioteca de PHP que puede manejar la generación de casi cualquier etiqueta HTML con php y utiliza el anidamiento de cierre que también ayuda a la legibilidad.

https://github.com/raftalks/Form

por ejemplo, una tabla dentro de una etiqueta div

Html::make(''div'', function($html)) { $html->table(function($table) { $table->thead(function($table) { $table->tr(function($tr) { $tr->th(''item''); $tr->th(''category''); }); }); $table->tr(function($tr) { $tr->td()->ng_bind(''item.name'',''ng-bind''); $tr->td()->ng_bind(''item.category'',''ng-bind''); $tr->setNgRepeat(''item in list'',''ng-repeat''); //using second parameter to force the attribute name. }); $table->setClass(''table''); }); $html->setClass(''tableContainer''); });


Mejor manera: no escriba el código de espagueti, use la plantilla o

// php code ?> <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"><?=$echoPhpVar?></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div> <?php //php code



Puedes usar un HEREDOC:

<?php function blah() { $bar = <<<EOS <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div> EOS; return $bar; } ?>


Se llama la sintaxis heredoc :

return <<< END <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div> END;


Si necesita un método que pueda usarse para almacenar HTML en una cadena, esta es la forma de hacerlo.

Yo no usaría ninguno de estos otros métodos sugeridos lol, usaría un búfer de salida. Todos estos otros métodos parecen mega sucios (porque a gran escala habría muchos personajes especiales volando) ... así que, a riesgo de ofender a alguien, solo diré las razones por las que me gusta a mi manera.

Si usas un buffer de salida como lo he hecho ...

Al usar un IDE, aún puede tener una gran ayuda intelectual con HTML y PHP separados unos de otros y aún así puede codificar objetos DOM genéricos rápidamente.

Al ver el código parece mucho más legible por humanos.

El código HTML se puede pasar en su estado de DOM listo en lugar de como una cadena que eventualmente deberá analizarse y, finalmente, crearse en un estado de DOM listo.

Cuando se utiliza HTML como un método de cadena, puede ser realmente difícil tratar de usar los distintos métodos de búsqueda y reemplazo de la función de cadena para cambiar parte de su código después del tiempo de ejecución. Por ejemplo, buscar la etiqueta <img> dentro de una cadena masiva de otros elementos HTML puede ser desalentador, especialmente cuando se trata de encontrar cosas entre etiquetas ...

Yo usaría el Stream Buffer de Salida así ...

ob_start(); ?> <div id="site_header"> <div id="site_header_inner"> <div id="site_header_logo"><?php echo $PhpVar; ?></div> <div id="site_header_countdown">BARE XX DAGER IGJEN</div> </div> </div> <?php $output = ob_get_clean(); ob_flush(); return $output; OR return echo $output