Funciones incorporadas o predefinidas en PHP
En la sección anterior revisamos algunas funciones incorporadas (es decir, prediseñadas para ser aplicadas en PHP) como la de levenshtein(), urlencode()
, entre otras. Sigamos ahora con las funciones de búsqueda de caracteres.
Extraer caracteres de un conjunto con substr()
Cuantificar presencia de caracteres con substr_count()
Reemplazar caracteres con substr_replace()
En .PHP
<?php
// substr()
// La palabra es un array de elementos
// [0] [1] [2] [3] [4] [5] [6]
// [o] [c] [t] [u] [b] [r] [e]
$mes = "Octubre";
// substr(cortarDesdeAqui, hastaAca)
$extraer1 = substr($mes, 3, 6);
echo $extraer1 . "
";
// ubre
// --- ---- ----
// substr_count()
$nombre = "abc abc abc";
$extraer2 = substr_count($nombre, "abc");
echo "abc se halla " . $extraer2 . " veces ";
echo "
";
// abc se halla 3 veces
// --- ---- ----
// substr_replace()
$saludo = "buen día Guayaquil";
// Añadir 'hola!' desde el caracter 0 hasta el 9
$cambio = substr_replace($saludo, "hola!", 0, 9);
echo $cambio;
// hola! Guayaquil
?>
Otras variaciones usan el cero como argumento. Eso es para indicar que solo deben haber insertos, pero no eliminación de caracteres. Y el uso de comillas vacías " " para indicar elminación, desde un punto en adelante:
Recordar: cada número de argumento (entre paréntesis) es la posición-índice de cada caracter de un string. Por ejemplo, función($string, 0, 9)
indica que la alteración (borrado o añadido de caracteres, según sea la función) ocurrirá entre esos índices-ubicación.
En .PHP
<?php
$frase = "quiero un encebollado";
// Insertando entre caracteres y borrando
// Ojo: cada número es la posición índice de un caracter en el string
$fraseAlterada = substr_replace($frase, "rico", 0, 9);
echo $fraseAlterada . "
";
// rico encebollado
// Ojo $fraseAlterada aloja la alteración última
// Insertando sin borrar
$fraseAlterada = substr_replace($fraseAlterada, "riquisimo ", 5, 0);
echo $fraseAlterada . "
";
// rico riquisimo encebollado
// Borrar desde el caracter indicado hacia adelante
$fraseAlterada = substr_replace($fraseAlterada, "", 14);
echo $fraseAlterada . "
";
// rico riquisimo
// Insertar (sin borrar) desde el inicio
$fraseAlterada = substr_replace($fraseAlterada, "HOY ENCEBOLLADO ", 0, 0);
echo $fraseAlterada . "
";
// HOY ENCEBOLLADO rico riquisimo
?>
Despedazar o descomponer strings mediante funciones explode(), strtok(), sscanf()
explode()
Con la función explode()
indicamos desde dónde separar y qué separar. En el ejemplo de abajo, explode()
dividirá el string únicamente atentiendo al caracter del primer argumento (que a su vez está presente en el propio string). En otras palabras, desde ese primer argumento decimos 'usa este caracter para dividir las porciones'. Luego de eso, el resultado será un arreglo (array) con esas porciones.
Esto último es importante: ya que el resultado es un arreglo, debemos exponerlo desde la función print_r();
. Esta función 'lee y muestra' los tipos de datos compuestos, como los arreglos (donde muestra el elemento y su índice) y como en los objetos (donde muestra sus valores pares).
En .PHP
<?php
$menu = 'ceviche, chifle, ají';
// Cuidado: no confundir comas
$componerloEnArreglo = explode(',' , $menu);
// Lee y muestra en forma de arreglo
print_r($componerloEnArreglo);
// Resultado:
/* Array (
[0] => ceviche
[1] => chifle
[2] => ají )
*/
?>
El argumento final de la función explode()
indica en cuántas partes máximas será divido el string. Es decir, en cuántos índices el string dado será dividido. Obviamente, no se podrá dividir el arreglo en una cantidad mayor de índices. Eso dependerá de los caracteres divisores dados en la función.
En .PHP
<?php
$compuesto = 'porcion, porcion, porcion';
$enUnaSolaPorcion = explode(',', $compuesto, 1);
echo ("Una sola porción" . "<br>");
print_r($enUnaSolaPorcion);
// Array ( [0] => porcion, porcion, porcion )
$enDosPorciones = explode(',', $compuesto, 2);
echo ("Dos porciones" . "<br>");
print_r($enDosPorciones);
// Array ( [0] => porcion [1] => porcion, porcion )
$enTresPorciones = explode(',', $compuesto, 3);
echo ("Tres porciones" . "<br>");
print_r($enTresPorciones);
// Array ( [0] => porcion [1] => porcion [2] => porcion )
?>
La interpretación del código anterior es:
Una sola porción:
Array
(
[0] => porcion, porcion, porcion
)
Dos porciones:
Array
(
[0] => porcion
[1] => porcion, porcion
)
Tres porciones:
Array
(
[0] => porcion
[1] => porcion
[2] => porcion
)
implode()
Por otro lado, la función implode()
–también llamada join()
– reagrupa los elementos de un arreglo dado.
En .PHP
<?php
// Elementos de arreglo
$amigos = array('Trump', 'Putin', 'Napoleón');
// Reagrupar elementos
$reagrupar = implode('-', $amigos);
echo ("Mis amigos son " . $reagrupar);
// Mis amigos son Trump-Putin-Napoleón
?>
strtok()
Itera las porciones según la división indicada, pero NO crea un arreglo de esas porciones (o tokens) evitando así cargar en memoria un arreglo. Solo separa esas porciones y las muestra en forma de invocaciones independientes.
En .PHP
<?php
$frase = "Eres perla que surgiste...";
// Indicamos división desde espacios en blanco
$porciones = strtok($frase, " ");
// Iterador: Cuando $porciones sea falso
// ... es decir, cuando $porciones tenga valor de cero o nulo
// o lo que es lo mismo, cuando YA NO haya qué más iterar...
while ($porciones != false) {
echo $porciones . "
";
// Indica que debe haber nuevo llamado
// Sin esto, habrá un bucle infinito!
$porciones = strtok(" ");
}
/* RESULTADO
Eres
perla
que
surgiste...
*/
?>
Un ejemplo interesante es cuando en la cadena de caracteres existen varios caracteres que pueden servir de delimitadores:
En .PHP
<?php
// Gran string
$datos = "user:123abc;name=dudu,email-dudu@web.com";
// Con divisores distintos
$porcion = strtok($datos, ":;=,-");
// Este es el repetidor o bucle
while ($porcion !== false) {
echo $porcion . "
";
// Repetir divisores en cada iteración
$porcion = strtok(":;=,-");
}
/*
user
123abc
name
dudu
email
dudu@web.com
*/
/* Con esta función podemos revisar
en qué momento termina la iteración
(desde el valor false) */
var_dump($porcion);
// bool(false)
?>
En la sección siguiente seguiremos revisando funciones de búsqueda de caracteres desde PHP.
BIBLIOGRAFÍA
www.php.net (2025). ¿Qué es PHP?Kevin Tatroe and Peter MacIntyre (2020). Programming PHP