Diferencia entre revisiones de «PHP Funcións para xerar código»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 66: Línea 66:
  
 
* Tamén produce unha saída pero permite establecer un formato dentro da cadea que amosa.
 
* Tamén produce unha saída pero permite establecer un formato dentro da cadea que amosa.
−
* Máis información: http://php.net/manual/es/function.sprintf.php
+
* Máis información: https://www.php.net/manual/es/function.printf
  
 
* Por defecto, se printf non leva argumentos produce a mesma saída que echo e print.
 
* Por defecto, se printf non leva argumentos produce a mesma saída que echo e print.

Revisión del 21:37 24 sep 2023

Sumario

Funcións para xerar código

  • NOTA: Esta sección está asociada á realización do EXERCICIO 1.


  • Como comentamos anteriormente, normalmente imos ter código PHP dentro de código HTML. A execución do código PHP dará como resultado un código HTML que se integrará có resto do código.
  • Para que PHP 'envío' cadeas que serán interpretadas polo navegador do cliente necesitamos utilizar as seguintes funcións.

Función echo

  • Sintaxe: echo "Cadea a amosar";
Pódense empregar comiñas simples ou dobres indistintamente, aínda que xa veremos que poden ter 'efectos' diferentes posteriormente.


  • O resultado de poñer esta liña será unha cadea que será visualizada polo navegador do cliente que fixo a petición.
  • Exemplos:
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 2     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>Exemplos de códigos php</title>
 7     </head>
 8     <body>
 9 <?php
10     echo "Unha cadea";
11     echo "<br />";
12     echo "Outra cadea";
13     
14     echo "Podemos poñer todo xunto. <br /> Non temos por que usar echos diferentes...<br/>";
15     
16     echo "Neste caso " . "concatenamos dúas cadeas.<br/>";
17     echo 'Outra' ,' forma ', 'de concatenar....';
18     
19     echo "<h5>Podemos poñer calqueira código HTML que será visualizado polo navegador</h5>"
20     . "<h3>Asegurarse que se cumpre o estándar correspondente !!!</h3>";
21 
22 ?>
23     </body>    
24 </html>

Función print

  • Ten o mesmo efecto que a función echo pero...
  • print imprime unha cadea; echo pode imprimir máis dunha separadas por coma.
  • print devolve un valor int que sempre ten valor 1 e polo tanto pode ser empregado dentro dunha expresión.
  • echo pode ser un pouco máis rápido que print.
Exemplos de código:
1 <?php        
2         print "Esto é unha cadea impresa con print...";
3         print "Esto é unha cadea" . " e esta outra...";
4 
5 ?>

Función printf

  • Por defecto, se printf non leva argumentos produce a mesma saída que echo e print.
Así, por exemplo:
1 <?php        
2         printf ("Esto é unha cadea impresa con printf...");
3 ?>
  • A principal vantaxe é que podemos engadir parámetros que será substituídos na cadea cun determinado formato.
Por exemplo:
1 <?php        
2     printf ("Isto é un número enteiro con signo%d<br/>",3.14);
3     printf ("Isto é un número flotante %f<br/>",3.14);
4     printf ("Isto é unha cadea %s</br>",3.14);
5     
6 ?>
Saída:
PHP Funcions XerarCodigo 01.jpg


Tamén está moi ben cando temos varias variables e non queremos estar concatenando una detrás doutra, ou que estean en metade da cadea....
1 <?php        
2 
3     printf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000);
4         
5 ?>

Función sprintf

  • Ten a mesma sintaxe que a función printf, pero coa diferenza que o resultado vai ser gardado nunha variable (veremos as variables no seguinte punto).
Por exemplo:
1 <?php        
2     $resultado = sprintf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000);
3     echo $resultado;
4 ?>


Función vsprintf

  • Ten a mesma funcionalidade que sprintf, pero coa particularidade que podemos enviar o conxunto de parámetro en forma de array.
Por exemplo:
1 <?php        
2     $param=['casa','verde'];
3     $resultado = vsprintf("Esta '%s' es de color %s",$param);
4     echo $resultado;
5 ?>

Caracteres especiais dentro das funcións

  • Pode darse o caso que necesitedes poñer dentro dun echo, printf,...caracteres que sexa interpretados pola función e que polo tanto non se visualicen.
  • O clásico exemplo será poñer o caracter " dentro dunhas das funcións.
  • Cando necesitemos poñer o carácter " dentro dunha función, temos varias opcións (no exemplo está aplicado á función echo pero valería para o resto):
1 <?php        
2         echo "Esta cadea \" está entrecomillada\" dentro dun echo...<br/>";
3         echo 'Outra forma "de entrecomillar" sería utilizando as comillas \'\'';
4 ?>
Como vemos o carácter escape é o carácter '\'.
Hai unha diferenza entre utilizar as comillas simples ou as dobres. O veremos claramente cando vexamos as variables. De todas formas un exemplo:
1 <?php        
2         echo 'Isto non se expandirá: \n unha nova liña';
3         echo "Isto se expandirá: \n unha nova liña";
4 ?>


  • O mesmo que o anterior, pero aplicado a outro carácter especial. Esta vez ao carácter % dentro da función printf/sprintf.
Neste caso en vez de amosar dito carácter a función o vai interpretar como se fose un parámetro. Para 'escapar' dito carácter debemos de escribir dous veces o '%' como se amosa a continuación:
1 <?php        
2         printf("Quero amosar o %% e ademais paso un parámetro: %s","valor param");
3 ?>



Exercicios propostos

  • Exercicio 1: Emprega echo / printf / sprintf e amosa nun texto centrado e dentro de

    o seguinte: Ana escribiu o seguinte: (nova liña) Os caracteres \n e \t aplican unha nova liña e novo tabulador pero non funcionan en HTML. O %s en printf se sustitúe por unha cadea e temos que ter coidado coas ' e " dentro do echo (nova liña) Espero que todo estea ben.



    • Exercicio 2: Amosa nunha páxina PHP os datos dun produto. Debe aparecer o nome, o prezo con dous díxitos decimais, a dispoñibilidade en unidades e unha descrición.
    Fai duas variacións do mesmo exercicio empregando echo e printf.
    As sentenzas PHP soamente deben ser as que amosan os datos do produto. O resto deben estar en HTML.



    • Exercicio 3: Crea un exercicio en PHP que mostre información real sobre un "Teléfono Móbil" nunha lista HTML. Utiliza diferentes tipos de datos de PHP e a función printf para formatear e amosar a información.
    Amosa a marca, modelo, prezo, dispoñibilidade (ten que amosar SI / NON sobre un valor booleano), en stock (SI / NON) sobre un valor booleano, data de lanzamento.
    Fai duas variacións do mesmo exercicio empregando echo e printf.



    • Exercicio 4: Visualiza empregando php, unha táboa cós días da semana en columnas e unha filas de dato.
    Fai 3 versións do exercicio, empregando echo, empregando printf e empregando sprintf
    Na fila de datos ten que saír en cada columna os seguintes datos: Columna 1 => "Angel", Columna 2 => -10, Columna 3 => Laura (nova liña) Ana, Columna 4 => Isto sería dous liñas => \n\n,Columna 5 => (nada) , Columna 6 => 3.14, Columna 7 => %s
    Nota: O salto de liña non funciona dentro dun td. Pensade que outra etiqueta HTML poderíades empregar.



    Solucións exercicios propostos

    • Solución Exercicio 1: Emprega echo / printf / sprintf e amosa nun texto centrado e dentro de

      o seguinte: Ana escribiu o seguinte: (nova liña) Os caracteres \n e \t aplican unha nova liña e novo tabulador pero non funcionan en HTML. O %s en printf se sustitúe por unha cadea e temos que ter coidado coas ' e " dentro do echo (nova liña) Espero que todo estea ben.

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title>Texto Centrado</title>
     5 </head>
     6 <body>
     7     <h1>Texto Centrado</h1>
     8     <?php
     9         printf("<center><h4>Ana escribiu o seguinte: <br />Os caracteres \\n e \\t aplican unha nova liña e novo tabulador pero non funcionan en HTML. O %%s en printf se sustitúe por unha cadea e temos que ter coidado coas ' e \" dentro do echo<br>Espero que todo estea ben</h4></center>");
    10     ?>
    11 </body>
    12 </html>
    



    • Solución Exercicio 2: Amosa nunha páxina PHP os datos dun produto. Debe aparecer o nome, o prezo con dous díxitos decimais, a dispoñibilidade en unidades e unha descrición.
    Fai dúas variacións do mesmo exercicio empregando echo, printf.
    As sentenzas PHP soamente deben ser as que amosan os datos do produto. O resto deben estar en HTML.
     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title>Exercicio printf en PHP</title>
     5 </head>
     6 <body>
     7     <h1>Información do Produto</h1>
     8     <p>Nome do produto: <?php printf("Produto: %s", "Camiseta"); ?></p>
     9     <p>Prezo: <?php printf("Prezo: $%.2f", 19.99); ?></p>
    10     <p>Dispoñibilidade: <?php printf("Dispoñible: %d unidades", 50); ?></p>
    11     <p>Descrición: <?php printf("Esta é unha descrición do produto %s.", "Camiseta de algodón"); ?></p>
    12 </body>
    13 </html>
    



    • Solución Exercicio 3: Crea un exercicio en PHP que mostre información real sobre un "Teléfono Móbil" nunha lista HTML. Utiliza diferentes tipos de datos de PHP e a función printf para formatear e amosar a información.
    Amosa a marca, modelo, prezo, dispoñibilidade (ten que amosar SI / NON sobre un valor booleano), en stock (SI / NON) sobre un valor booleano, data de lanzamento.
     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title>Información do Teléfono Móbil</title>
     5 </head>
     6 <body>
     7     <h1>Detalles do Teléfono Móbil</h1>
     8     <ul>
     9         <li><?php printf("Marca: %s", "Apple"); ?></li>
    10         <li><?php printf("Modelo: %s", "iPhone 13"); ?></li>
    11         <li><?php printf("Prezo: $%.2f", 999.99); ?></li>
    12         <li><?php printf("Dispoñibilidade: %d unidades", 20); ?></li>
    13         <li><?php printf("En stock: %s", false ? "Sí" : "Non"); ?></li>
    14         <li><?php printf("Data de lanzamento: %s", date("d/m/Y")); ?></li>
    15     </ul>
    16 </body>
    17 </html>
    



    • Solución Exercicio 4: Visualiza empregando php, unha táboa cós días da semana en columnas e unha filas de dato.
    Fai 3 versións do exercicio, empregando echo, empregando printf e empregando sprintf
    Na fila de datos ten que saír en cada columna: "Angel", -10, Laura (nova liña) Ana, Isto sería dous liñas => \n\n, , 3.14, %s


    • Con ECHO:
     1 <?php
     2 echo "<table border='1'>";
     3 echo "<tr>";
     4 echo "<th>Lunes</th>";
     5 echo "<th>Martes</th>";
     6 echo "<th>Miércoles</th>";
     7 echo "<th>Jueves</th>";
     8 echo "<th>Viernes</th>";
     9 echo "<th>Sábado</tsh>";
    10 echo "<th>Domingo</th>";
    11 echo "</tr>";
    12 
    13 echo "<tr>";
    14 echo "<td>\"Angel\"</td>";
    15 echo "<td>Laura\n<br />Ana</td>";
    16 echo "<td>Isto sería dous liñas => \\n\\n</td>";
    17 echo "<td></td>"; // Dejamos esta columna vacía
    18 echo "<td>-10</td>";
    19 echo "<td>3.14</td>";
    20 echo "<td>%s</td>";
    21 echo "</tr>";
    22 
    23 echo "</table>";
    24 ?>
    


    • Con PRINTF
     1 printf("<table border='1'>");
     2 printf("<tr>");
     3 printf("<th>Lunes</th>");
     4 printf("<th>Martes</th>");
     5 printf("<th>Miércoles</th>");
     6 printf("<th>Jueves</th>");
     7 printf("<th>Viernes</th>");
     8 printf("<th>Sábado</th>");
     9 printf("<th>Domingo</th>");
    10 printf("</tr>");
    11 
    12 printf("<tr>");
    13 printf("<td>\"Angel\"</td>");
    14 printf("<td>Laura<br>Ana</td>");
    15 printf("<td>Isto sería dous liñas => \\n\\n</td>");
    16 printf("<td></td>"); // Dejamos esta columna vacía
    17 printf("<td>%d</td>", -10);
    18 printf("<td>%.2f</td>", 3.14);
    19 printf("<td>%s</td>", "%s");
    20 printf("</tr>");
    21 
    22 printf("</table>");
    23 ?>
    


    • Con SPRINTF:
     1 <?php
     2 $html = sprintf("<table border='1'>
     3                   <tr>
     4                     <th>Lunes</th>
     5                     <th>Martes</th>
     6                     <th>Miércoles</th>
     7                     <th>Jueves</th>
     8                     <th>Viernes</th>
     9                     <th>Sábado</th>
    10                     <th>Domingo</th>
    11                   </tr>
    12                   <tr>
    13                     <td>\"Angel\"</td>
    14                     <td>Laura<br>Ana</td>
    15                     <td>Isto sería dous liñas => \\n\\n</td>
    16                     <td></td>
    17                     <td>%d</td>
    18                     <td>%.2f</td>
    19                     <td>%s</td>
    20                   </tr>
    21                 </table>",
    22                 -10,
    23                 3.14,
    24                 "%s");
    25 
    26 echo $html;
    27 ?>
    



    -- Ángel D. Fernández González -- (2016).