La función de PHP substr() permite obtener una subcadena a partir de una cadena dada definida por los parámetros de inicio y longitud.
Definición
substr() devuelve una subcadena de una cadena pasada como argumento desde una posición y longitud como parámetros incluidos en la llamada a la función. La cadena de entrada debe tener al menos un carácter.
string substr( string $cadena , int $inicio [, int $longitud ] )
Parámetros
$cadena
La cadena de entrada en la función tiene que tener al menos un carácter.
$inicio
Si el valor de $inicio puede ser un valor entero positivo o negativo. Si $inicio es positivo, la subcadena devuelta comenzará en la posición del valor de $inicio empezando desde 0. Si el valor de $inicio es negativo, la subcadena devuelta empezará contando desde el final de $cadena.
Si la longitud de $cadena es menor al valor de $inicio la función devolverá FALSE.
$longitud
El parámetro $longitud es opcional, si no se especifica substr() devolverá una subcadena empezando en $inicio y hasta el final de $cadena.
Si $longitud se especifica y es un valor positivo, la subcadena devuelta contendrá los caracteres comenzando en $inicio y como máximo los caracteres indicados en $longitud.
Si $longitud es negativo, la función substr() devolverá una subcadena comenzando en $inicio y omitiendo el número de caracteres definidos por $longitud de $cadena empezando por el final. Si $inicio indica una posición más allá de su truncamiento la función devolverá FALSE.
Si se especifica $longitud y el valor es 0, FALSE o NULL, la función devolverá una cadena vacía
Notas de versión
A partir de PHP 7.0.0 si la longitud de la cadena pasada como argumento, $cadena, es igual a $inicio la función devolverá una cadena vacía, en versiones anteriores devuelve FALSE.
Ejemplos
<?php
$cadena = '1234567890';
echo ‘SubCadena = ' . substr($cadena, 0, 3);
?>
Resultado
Subcadena = 123
$cadena = '1234567890';
echo ‘SubCadena = ' . substr($cadena, 3);
?>
Resultado
Subcadena = 4567890
Ejemplo con longitud negativa
$cadena = '1234567890';
echo 'SubCadena = ' . substr($cadena, 3, -2);
?>
Resultado
Subcadena = 45678