Apuntes php

PHP: Porque a veces necesitas un poco de caos en tu vida.

Manipulación de Strings en PHP

Las cadenas de texto (strings) forman el contenido de tu página web. En esta lección veremos como crear, unir, y manipular cadenas, desde lo mas básico.

Lo básico sobre strings

Una cadena de tecto es cualquier secuencia de caracteres (números, letras o signos) entre comillas, ya sean simples ( ') o dobles (").
PHP considera todo lo que está entre comillas como una cadena, pero debes usar el mismo tipo de comillas para abrir y cerrar:

<?php
$cadena1 = 'Esto es una cadena con comillas simples';
$cadena2 = "Esto es una cadena con comillas dobles";
$cadena3 = "Esta 'frase' es una sola cadena"; // Válido
$cadena4 = 'Y esta "otra" también';           // válido
$cadena5 = "Esto es inválido';                // ¡Error! Comillas mezcladas
?>

El tipo de comillas que abras define el cierre. Puedes incluir comillas diferentes dentro de la cadena sin problema. Si necesitas usar el mismo tipo de comillas, escápalas con una barra invertida (\):

<?php
$cadena1 = "Este es un \"ejemplo\" válido";
$cadena2 = 'That\'s a valid string';
$cadena3 = "Ruta: c:\\windows\\program.exe"; // Doble escape para mostrar \
?>

Las cadenas son esenciales para mostrar texto o guardar datos, como nombres o correos. También puedes usarlas en constantes para valores fijos:

<?php
const SITIO = "miweb.com"; // Alternativa a define()
echo SITIO; // Imprime: miweb.com
?>

Asignando cadenas a variables

Asigna una cadena a una variable con el operador =:

<?php
$pais = "España";
$pais = 'España'; // Equivalente
echo $pais;       // Imprime: España
?>

Si asignas números a una cadena, puedes forzarla a otro tipo con casting ((int), (string) o settype(). Casting es más común porque es corto y claro, como pegar una etiqueta al valor:

<?php
$texto = "123";
$numero = (int)$texto;      // Casting: ahora es integer
settype($texto, "integer"); // settype: mismo resultado, pero más largo
echo gettype($numero);      // Imprime: integer
?>

Comillas simples vs. dobles

PHP analiza el contenido de las comillas dobles y sustituye variables por su valor:

<?php
$pais = "España";
$frase = "Yo vivo en $pais";
echo $frase; // Imprime: Yo vivo en España
?>

PHP no analiza el contenido entre comillas simples, mostrando el texto literal:

<?php
$pais = "España";
$frase = 'Yo vivo en $pais';
echo $frase; // Imprime: Yo vivo en $pais
?>

Nota: Usa comillas simples para cadenas simples, ya que son más rápidas (PHP no las analiza). Usa comillas dobles cuando necesites incluir variables o caracteres especiales (como \n).

Sumando cadenas

Une cadenas con el operador . (concatenación):

<?php
$nombre = "Juan";
$fruta = "manzanas";
$accion = $nombre . " come " . $fruta;
echo $accion; // Imprime: Juan come manzanas
?>

Puedes concatenar directamente o asignar el resultado a una variable:

<?php
$mivariable = "Primera frase, ";
$mivariable .= "segunda frase y ";
$mivariable .= "tercera frase.";
echo $mivariable; // Imprime: Primera frase, segunda frase y tercera frase.
?>

O de forma compacta:

<?php
$mivariable = "Primera frase, " . "segunda frase y " . "tercera frase.";
echo $mivariable; // Imprime: Primera frase, segunda frase y tercera frase.
?>

Calculando la longitud de una cadena

Usa strlen() para contar los caracteres de una cadena:

<?php
$cadena = "hola como te va";
$longitud = strlen($cadena);
echo $longitud; // Imprime: 15
$cadena = "hola como  te va"; // Espacio extra
echo strlen($cadena); // Imprime: 16
?>

Nota: strlen() cuenta cada carácter,incluyendo espacios y caracteres especiales.

Eliminando espacios

Elimina espacios en blanco u otros caracteres con trim(): Quita espacios, tabuladores (\t), nuevas líneas (\n), retornos de carro(\r), etc., al inicio y final.
ltrim()elimina solo al inicio, y rtrim() solo al final:

<?php
$cadena = "\thola como te va\n"; // cadena con tab al principio y nueva linea al final
echo $cadena;                    // Imprime:    hola como te va

echo ltrim($cadena, "\t");       // Imprime: hola como te va
echo trim($cadena);              // Imprime: hola como te va
?>

Puedes eliminar cualquier carácter, no solo espacios:

<?php
$cadena = "hola como te va";
echo ltrim($cadena, "h"); // Imprime: ola como te va
?><

Mayúsculas y minúsculas

Convierte el texto con: strtoupper(): todo a mayúsculas.
strtolower(): todo a minúsculas.
ucfirst(): Primera letra en mayúscula.
ucwords(): Primera letra de cada palabra en mayúscula.

<?php
$cadena = "hola cómo te va";
echo strtoupper($cadena) . "\n";   // Imprime: HOLA CÓMO TE VA
echo strtolower($cadena) . "\n";   // Imprime: hola cómo te va
echo ucfirst($cadena) .    "\n";   // Imprime: Hola cómo te va
echo ucwords($cadena) .    "\n";   // Imprime: Hola Cómo Te Va
?>

Nota: Estas funciones respetan caracteres UTF-8 (como “á”), pero asegúrate de usar codificación UTF-8 en tu archivo.

Subcadenas

Extrae partes de una cadena con substr($cadena, inicio, longitud):
inicio: Posición inicial (0 es el primer carácter; números negativos cuentan desde el final).
longitud: (opcional): Cuántos caracteres tomar (positiva: hacia la derecha; negativa: resta desde el final).

<?php
 $cadena = "123456789";
echo substr($cadena, 0) . "\n";     // Imprime: 123456789
echo substr($cadena, 3) . "\n";     // Imprime: 456789
echo substr($cadena, ‐3) . "\n";    // Imprime: 789
echo substr($cadena, 3, 3) . "\n";  // Imprime: 456
echo substr($cadena, 2, ‐3) . "\n"; // Imprime: 3456
echo substr($cadena, ‐6, ‐5) . "\n";// Imprime: 4
?>

Localiza una subcadena con strpos($cadena, subcadena):

<?php
$cadena = "blah@imaginary.com";
$subcadena = "@";
$inicio_dominio = strpos($cadena, $subcadena);
echo $inicio_dominio . "\n"; // Imprime: 4
echo substr($cadena, $inicio_dominio + 1); // Imprime: imaginary.com
?>

Cadenas como arrays

Accede a caracteres individuales usando corchetes ([]), como si fuera un array:

<?php
$cadena = "hola";
echo $cadena[0] . "\n"; // Imprime: h
echo $cadena[2] . "\n"; // Imprime: l
?>

Ejemplo con referencias: Modifica una cadena por referencia en una función:

<?php
function agregar_prefijo(&$texto)
    {
    $texto = "Sr. " . $texto;
    }
$nombre = "Juan";
agregar_prefijo($nombre);
echo $nombre; // Imprime: Sr. Juan
?>

Otras funciones útiles

  • str_replace (buscar, reemplazar, cadena): Reemplaza texto.
<?php
$cadena = "Hola, mundo";
echo str_replace("mundo", "PHP", $cadena); // Imprime: Hola, PHP
?>
  • explode (delimitador, cadena): Divide una cadena en un array.
<?php
$cadena = "manzana,pera,uva";
$frutas = explode(",", $cadena);
echo $frutas[0]; // Imprime: manzana
?>
TOP