Generar código HTML dinámicamente con PHP


Cuando programamos en PHP en algunas ocasiones repetimos mucho código html para mostrar determinado contenido.

Por ejemplo, si tenemos varias imágenes (supongamos 10) y queremos que todas estén situadas a 10 pí­xeles de distancia cada una, podríamos tener un código CSS de la siguiente forma:

En el caso de 10 imágenes sería sencillo escribir todo el código, pero si aumentamos la cantidad por ejemplo a 100, pues resultaría bastante incordio tener que copiar y pegar y a la vez modificar tantas líneas.

Podemos agilizar nuestra manera de programar, cuando tenemos código repetitivo y que solo tiene pequeñas variaciones como en nuestro caso que solo varía el ancho 10 px en cada imagen. Por ejemplo podríamos crear un código php como el siguiente:

< ?
echo '';
?>

El problema nos viene cuando visualizamos el código que se ha generado y sería algo como:

Aparentemente nuestro código se ha generado en una sola línea perdiendo toda la facilidad de lectura en el código fuente de la página html. Esto se debe a que las cadenas en php que estamos volcando como salida con echo están escritas con comillas simples (como se recomienda, para que php no tenga que evaluar si dentro hay más código php).

Para solucionarlo, simplemente debemos escribir el mismo código pero mostrando las cadenas con comillas dobles y escapar los carácteres como las comillas dobles con la \:

< ?
echo "";
?>

Este pequeño cambio, puede ser una tontería pero si desconoces lo que estaba pasando, puedes estar muy frustado al ver que tu código no se genera correctamente y puesto que fue mi caso y desconocía este comportamiento he querido reflejarlo y que quede constancia en el blog.

Todo sea por llevar las buenas prácticas a la hora de mostrar cadenas, que como vuelvo a recordar, es preferible usar comillas simples para evitar que php tenga que revaluar el la cadena por si contiene código php, siendo más eficaces las comillas simples y variables concatenadas en el lugar de las variables php.


Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.