preg_split

(PHP 4, PHP 5, PHP 7, PHP 8)

preg_splitDivide una cadena mediante expresión regular

Descripción

preg_split(
    string $pattern,
    string $subject,
    int $limit = -1,
    int $flags = 0
): array|false

Divide una cadena mediante expresión regular.

Parámetros

pattern

El patrón a buscar, en forma de chaîne de caractères.

subject

La cadena de entrada.

limit

Si limit está especificado, entonces solo se devuelven las limit primeras sub-caenas con el resto de la cadena colocado en la última sub-caena. Un limit de -1 o 0 significa "sin límite".

flags

flags puede ser la combinación de las siguientes opciones (combinadas con el operador |):

PREG_SPLIT_NO_EMPTY
Si esta opción está activada, solo se devuelven las sub-caenas no vacías por preg_split().
PREG_SPLIT_DELIM_CAPTURE
Si esta opción está activada, las expresiones entre paréntesis entre los delimitadores de patrones también serán capturadas y devueltas.
PREG_SPLIT_OFFSET_CAPTURE

Si esta opción está activada, para cada resultado, su posición será devuelta. Tenga en cuenta que esto cambia el valor devuelto a un array donde cada elemento es un array compuesto por la cadena encontrada en la posición 0 y la posición de la cadena en subject en la posición 1.

Valores devueltos

Devuelve un array que contiene las sub-caenas de subject, separadas por las cadenas que coinciden con pattern, o false en caso de error.

Errores/Excepciones

If the regex pattern passed does not compile to a valid regex, an E_WARNING is emitted.

Ejemplos

Ejemplo #1 Ejemplo con preg_split(): División de una cadena de búsqueda

<?php
// divide la frase mediante comas y espacios
// lo que incluye los " ", \r, \t, \n y \f
$keywords = preg_split("/[\s,]+/", "lenguaje de marcado, programación");
print_r($keywords);
?>

El resultado del ejemplo sería:

Array
(
    [0] => lenguaje
    [1] => de
    [2] => marcado
    [3] => programación
)

Ejemplo #2 Dividir una cadena en caracteres

<?php
$str
= 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>

El resultado del ejemplo sería:

Array
(
    [0] => s
    [1] => t
    [2] => r
    [3] => i
    [4] => n
    [5] => g
)

Ejemplo #3 Dividir una cadena y capturar las posiciones

<?php
$str
= 'lenguaje de marcado, programación';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>

El resultado del ejemplo sería:

Array
(
    [0] => Array
        (
            [0] => lenguaje
            [1] => 0
        )

    [1] => Array
        (
            [0] => de
            [1] => 8
        )

    [2] => Array
        (
            [0] => marcado,
            [1] => 12
        )

    [3] => Array
        (
            [0] => programación
            [1] => 22
        )

)

Notas

Sugerencia

Si no se necesita el poder de las expresiones regulares, pueden elegirse alternativas más rápidas (aunque más simples) como explode() o str_split().

Sugerencia

Si la búsqueda de una coincidencia falla, se devuelve un array que contiene un solo elemento que contiene la cadena de entrada.

Ver también