Divide una cadena mediante expresión regular

# preg_split

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

preg_split — Divide una cadena mediante expresión regular

### Descripción

function 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 cadena.

`subject`

  La cadena de entrada.

`limit`

  Si se especifica, entonces solo se devuelven las primeras sub-cadenas hasta `limit` con el resto de la cadena colocado en la última sub-cadena. 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` si ocurre un error.

### Errores/Excepciones

Si el patrón regex pasado no se compila a una regex válida, se emite una `E_WARNING`.

### 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 ejemplo anterior mostrará:

    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 ejemplo anterior mostrará:

    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 ejemplo anterior mostrará:

    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

- Patrones PCRE
- preg_quote() - Protección de caracteres especiales de expresiones regulares
- explode() - Divide una string en segmentos
- preg_match() - Realiza una búsqueda de coincidencia con una expresión regular estándar
- preg_match_all() - Expresión regular global
- preg_replace() - Buscar y reemplazar mediante expresión regular estándar
- preg_last_error() - Devuelve el código de error de la última expresión PCRE ejecutada

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open