preg_split preg_match how examples ejemplo data php preg-split

php - preg_match - preg_split cómo incluir el delimitador de división en los resultados?



preg_split php ejemplo (2)

Tengo este patrón simple que divide un texto en puntos

$text = preg_split("/[/.:!/?]+/", $text);

Pero quiero incluir. : o! al final de los elementos de la matriz

IE ahora para "good: news.everyone!" yo tengo:

array("good","news","everyone","");

pero lo que quiero es:

array("good:","news.","everyone!","");


Aqui tienes:

preg_split(''/([^.:!?]+[.:!?]+)/'', ''good:news.everyone!'', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

Cómo funciona: el patrón en realidad convierte todo en un delimitador. Luego, para incluir estos delimitadores en la matriz, puede usar la constante PREG_SPLIT_DELIM_CAPTURE . Esto devolverá una matriz como:

array ( 0 => '''', 1 => ''good:'', 2 => '''', 3 => ''news.'', 4 => '''', 5 => ''everyone!'', 6 => '''', );

Para deshacerse de los valores vacíos, use PREG_SPLIT_NO_EMPTY . Para combinar dos o más de estas constantes, usamos el bitwise | operador. El resultado:

array ( 0 => ''good:'', 1 => ''news.'', 2 => ''everyone!'' );


No se utiliza para PREG_SPLIT_DELIM_CAPTURE si usa una apariencia positiva detrás de su patrón. La función mantendrá los delimitadores.

$text = preg_split(''/(?<=[.:!?])/'', ''good:news.everyone!'', 0, PREG_SPLIT_NO_EMPTY);

Si usas lookbehind , solo buscará el personaje sin emparejarlo. Por lo tanto, en el caso de preg_split() , la función no descartará el carácter.

El resultado sin el indicador PREG_SPLIT_NO_EMPTY :

array ( 0 => ''good:'', 1 => ''news.'', 2 => ''everyone!'', 3 => '''' );

El resultado con el indicador PREG_SPLIT_NO_EMPTY :

array ( 0 => ''good:'', 1 => ''news.'', 2 => ''everyone!'' );

Puede probarlo utilizando este comprobador de funciones en línea de PHP .