Delanover

    Personal Blog

    str_split nos permite dada una cadena de texto, obtener una matriz cuyos valores sean cada carácter de la cadena, e incluso poner un límite numérico para que por ejemplo, cada elemento de la matriz contenga N caracteres.

    Su sentencia es:

    <?
    $matriz = str_split($cadena, ($limite));
    ?>

    Cadena es la cadena de texto que vamos a dividir en la matriz.
    Límite es el número máximo de caracteres que puedo contener cada elemento de la matriz. Es opcional.

    Ejemplo

    <?
    $cadena = "Texto";
    $matriz = str_split($cadena, 2);
     
    foreach($matriz as $clave)
    	echo $clave . "<br>";
    ?>

    Devuelve:

    Te
    xt
    o

    Si no estuviera el 2 como parámetro, devolvería:

    T
    e
    x
    t
    o


    str_word_count nos permite contar las palabras que existen en una cadena, separadas por cualquier caracter que no sea una letra. Por ejemplo, en la frase: OLPC tiene 3 años, diria que solo existen 3 palabras, OLPC, tiene, y años. Tambien podriamos hacer la prueba con la frase: OLPC t1ene 3 años, diciendo que tendria 4 palabras, OLPC, t, ene, y años. Es decir, cualquier caracter que no sea una letra, actúa como separador entre palabras, aunque podemos añadir excepciones.

    Su sentencia es:

    <?
    $resultado = str_word_count($cadena, ($formato, ($lista)))
    ?>

    Cadena es la cadena de texto en la cual vamos a contar el número de palabras existentes.
    Formato es un número del cero al dos, que nos permite personalizar el resultado. Si ponemos un 0, devuelve el número de palabras (por defecto), si ponemos un 1, devuelve un array cuyos elementos sean las palabras encontradas, y si ponemos un 2, devuelve un array cuyos elementos sean las palabras encontradas y cuyo índice es la posición de la letra de cada palabra.
    Lista es la lista de caracteres que queremos excepcionar para que no sean separadores de palabras. Por defecto son todos, salvo las letras mayúsculas y minúsculas (incluyendo la Ñ y las vocales con acentos)

    Ejemplo

    <?
    $cadena = "OLPC tiene 3 años";
    $resultado1 = str_word_count($cadena);
    //Simplemente obtenemos el número de palabras
    $resultado2 = str_word_count($cadena, 1);
    //Obtenemos cada palabra en un elemento del array resultado2
    $resultado3 = str_word_count($cadena, 2, "3");
    //Hacemos que '3' se convierta en una excepcion (osea que hay 4 palabras) y cada elemento del array pertenece a cada palabra de la cadena, cuyos indices son la posicion de la primera letra de cada palabra
     
    echo $resultado1 . "<br><br>";
     
    foreach($resultado2 as $clave => $valor)
    	echo "Clave: $clave y Valor: $valor <br>";
    echo "<br>";
    foreach($resultado3 as $clave => $valor)
    	echo "Clave: $clave y Valor: $valor <br>";
     
    ?>

    Nos devuelve:

    3

    Clave: 0 y Valor: OLPC
    Clave: 1 y Valor: tiene
    Clave: 2 y Valor: años

    Clave: 0 y Valor: OLPC
    Clave: 5 y Valor: tiene
    Clave: 11 y Valor: 3
    Clave: 13 y Valor: años


    strcasecmp nos permite comparar el primer caracter de dos cadenas de texto, y obtener la diferencia de posiciones (respecto la tabla ASCII) que hay entre ellas. No distingue entre mayúsculas o minúsculas en el caso de las letras. En caso de que la cadena sea de más de un carácter y el primer carácter sea igual, pasará al segundo carácter (lo veremos más claro con el ejemplo)

    Su sentencia es:

    <?
    $resultado = strcasecmp($cadena1, $cadena2);
    ?>

    Cadena1 y Cadena2 son las cadenas de texto, cuyos primeros caracteres se van a comparar.

    Ejemplo

    <?
    $resultado = strcasecmp("a", "b");
    //Se resta el primero menos el segundo, por eso el resultado saldrá negativo
    echo $resultado . "<br>";
    $resultado2 = strcasecmp("hola", "Hona");
    //Aqui, como h es igual a H, pasa a comprobar el siguiente caracter, y como también es igual, pasa a comprobar el tercero, entre 'l' y 'n'. Podemos observar que hay una diferencia de 2 posiciones entre ambos
    echo $resultado2 . "<br>";
    $resultado3 = strcasecmp("=", "-");
    echo $resultado3 . "<br>";
    //Ahora, pasaremos los caracteres = y - a ASCII y los restaremos, para ver que nos da el mismo resultado:
    $otro = ord("=") - ord("-");
    echo $otro;
    ?>

    Nos devuelve:

    -1
    2
    16
    16


    strchr y strstr (usaré strstr para los ejemplos pero funcionan de manera idéntica) nos permiten obtener una cadena de texto posterior o anterior a un separador.

    Su sentencia es:

    <?
    $resultado = strstr($cadena, $separador, ($bool));
    ?>

    Cadena es la cadena de texto que vamos a dividir.
    Separador es la cadena de texto que nos permitirá dividir la otra cadena de texto entrante.
    Bool es un valor, que puede ser true o false. Por defecto está en false. Es opcional.
    Nota: el último parámetro solo funciona a partir de la versión de PHP 5.3.0

    Ejemplo

    <?
    $email  = 'direccion@ejemplo.com';
    $dominio = strchr($email, '@');
    echo $dominio . "<br>";
     
    $usuario = strchr($email, '@', true);
    echo $usuario;
    ?>

    Nos devuelve:
    @ejemplo.com
    direccion


    strcmp y strcoll funcionan de una manera parecida a strcasecmp. Devuelve 0 si las cadenas son iguales. Devuelve 1 si la el carácter de la segunda es mayor (en la table ascii) que el de la primera cadena, y -1 en caso contrario.

    Su sentencia es:

    <?
    $resultado = strcmp($cadena1, $cadena2);
    ?>

    Cadena1 y Cadena2 serán las cadenas cuyos primeros caracteres se compararan. Es sensible a mayúsculas y minúsculas, al contrario que strcasecmp.

    Ejemplo

    <?
    $resultado = strcmp("a", "d");
    echo $resultado . "<br>";
    $resultado2 = strcmp("z", "a");
    echo $resultado2 . "<br>";
    $resultado3 = strcmp("a", "C");
    echo $resultado3 . "<br>";
     
    ?>

    Nos devuelve:
    -1
    1
    1

    La computación en la nube, es un tipo de computación o modelo basado en la compartición de recursos y datos a través de internet.

    Se podría dividir en varias capas:
    El cliente: es el terminal (conjunto de hardware y software) que accede y confia en el sistema cloud computing suministrado por un proveedor.

    El SaaS (Software as a Service, Software como un servicio): elimina la necesidad de tener que instalar y correr aplicaciones en un ordenador. Usa un software como un servicio a través de internet. Un ejemplo de este servicio podría ser Google Docs (aunque en general, Google Apps) ya que podemos usar un editor de texto sin tener que instalar nada en nuestros ordenadores.

    El PaaS (Platform as a Service, Plataforma como un servicio): es un ambiente de desarrollo, que consiste en un software básico con una base de datos y herramientas de desarrollo. Un ejemplo sería Google AppEngine, que está basado en Python y Java.

    El IaaS (Infrasctructure as a Service, Infraestructura como un servicio): en vez de tener que comprar servidores, software, espacio (discos duros), y equipamiento, los clientes alquilan estos servicios. Además, el empresario puede elegir quien quiere que sea su proveedor (lo cual quiere decir que existirá competencia en el mercado). Como ejemplo de almacenamiento, tenemos los servicios de servidores de almacenamiento online, como Megaupload o Rapidshare, y como ayuda o mantenimiento, dispondriamos de una ayuda online las 24 horas (aunque esto depende del proveedor) sin tener que contratar a un servicio especializado por nuestra cuenta. También eliminaría le necesidad de mantener el hardware y software de la empresa (que siempre tiene que estar actualizado)


    Esquema de las capas

    La computación en la nube reduce los costes de las empresas y el presupuesto que necesita cada una para ser desarrollada (lo que aumentaría el número de empresas). Por un lado, el empresario necesitaría menos expertos cualificados en temas como aplicaciones (por falta de tales), seguridad, mantenimiento o administración, ya que en todo momento dispondría de un servicio técnico totalmente gratis (contratando los servicios).

    Otro efecto considerable, sería el descenso de programadores (orientados a desarrollar aplicaciones) que necesitarían las empresas. Esto, por el lado de las empresas es bueno ya que reduce los costes, pero por el lado de los programadores es sin duda malo, debido a que reduciría la demanda de sus servicios, que a su vez generaría un abaratamiento de estos (lo cual vuelve a ser bueno para las empresas que los quieran contratar).

    Como dije anteriormente en la descripción de las capas, no serían necesarias la creación de aplicaciones personalizadas, ya que estas aplicaciones son online, a las cuales accederían las empresas mediante una subscripción (mensual, anual..). Es interesante pararnos en este último punto. A la larga, para las empresas grandes, importantes y que llevan muchos años en el mercado, puede ser una desventaja, ya que seguramente a lo largo de los años, pagarían más por esa subscripción, que a un grupo de programadores para realizar la aplicación que quieran. Sin embargo, para las empresas que están empezando, es algo bastante positivo, porque la inversión es mínima comparado con el hecho de tener que comprar la aplicación o contratar a un grupo de programadores para crearla.

    Aumentaría desde luego, la rapidez con la que las empresas adquieren y usan las aplicaciones, ya que al ser una subscripción, las aplicaciones se mantendrían online y quedarían a expensas de la personalización (a partir de un estandar) que cada empresa quiera realizar sobre esta. Al ser aplicaciones online, también aumenta la facilidad con la que podriamos generar reportes.

    Otra pesadilla de todo empresario que dispone de una aplicación es la actualización de la misma, ya que muchas de ellas, requerirían tener que usar una base de datos desde cero, es decir, que se perderían los datos ya guardados. Con Cloud Computing este problema quedaría solventado ya que asegura mantener los datos ya guardados.

    Sin embargo, a pesar de todas estas ventajas, la computación en la nube también dispone de varias desventajas, sobre todo al sector de los expertos.

    Por un lado, está el problema de la privacidad y almacenamiento de datos. Cuando un empresario o propietario guarda datos en su base de datos, como los de los clientes propios, con datos muy personales como nombres, apellidos, teléfonos y direcciones, estos datos quedan en propiedad de este dueño. Sin embargo, con Cloud Computing, además de conocer estos datos el dueño, los conocería también la empresa encargada de proporcionarles servicios (como almacenamiento) a este empresario, es decir, que estos propietarios que alquilan los servicios a una empresa de Cloud Computing dejan su información a sus proveedores.

    Otro tema bastante serio, es el comentado anteriormente. La demanda de expertos en ámbitos de seguridad, mantenimiento y aplicaciones por parte de las empresas decaería sustancialmente.

    Como SaaS, tenemos de ejemplo a SalesForce.com, la cual nos deja un video muy completo y sencillo de entender, en el que comprenderemos la función de esta empresa:

    Una matriz, no es más que una variable con una o varias dimensiones, en la que podemos almacenar el mismo tipo de datos que en una variable normal y corriente, pero nos permite acceder a contenido de una manera mucho más simple y fácil.

    Para declarar una variable lo hacemos del siguiente modo:

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
    </script>

    Para acceder a su contenido tenemos dos opciones. Por un lado, podemos acceder a el contenido entero de la matriz:

    <script language="javascript">
    alert(matriz);
    </script>

    Que nos devuelve: uno,dos,tres,cuatro

    O acceder al contenido de cada elemento de la matriz uno a uno:

    <script language="javascript">
    alert(matriz[0]);
    </script>

    Que nos devuelve: uno

    Para recorrer todos los valores de la matriz es recomendable hacerlo mediante un bucle, como for o while.

    ¿Qué es lo que podemos hacer con un array? A continuación explicaré los siguientes métodos con ejemplos: concat, join, pop, push, shift, unshift, slice, splice, reverse y sort.

    Concat nos sirve para unir en una nueva matriz, los valores de otras matrices.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
    otraMatriz = new Array("eins", "zwei", "drei", "vier");
    diferenteMatriz = new Array("one", "two", "three", "four");
     
    nuevo = matriz.concat(otraMatriz, diferenteMatriz);
    alert(nuevo);
    </script>

    Devuelve: uno,dos,tres,cuatro,eins,zwei,drei,vier,one,two,three,four

    Join nos permite obtener una matriz separada por un separador que nosotros queramos. Recordemos que por defecto salen separadas por comas.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    nuevo = matriz.join(" - ");
    alert(nuevo);
    </script>

    Nos devuelve: uno – dos – tres – cuatro

    Pop nos permite eliminar y obtener el último valor de una matriz.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    nuevo = matriz.pop(matriz);
    alert(nuevo);
    alert(matriz);
    </script>

    Nos devuelve: cuatro
    y: uno,dos,tres

    Push nos añade un nuevo elemento a la matriz por detrás, y nos dice cuantos elementos existen (tras añadirlo).

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    nuevo = matriz.push(matriz);
    alert(nuevo);
    alert(matriz);
    </script>

    Nos devuelve: 5
    y: uno,dos,tres,cuatro,cinco

    Shift nos permite eliminar y obtener el primer valor de una matriz.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    nuevo = matriz.shift(matriz);
    alert(nuevo);
    alert(matriz);
    </script>

    Nos devuelve: uno
    y: dos,tres,cuatro

    Unshift nos añade un nuevo elemento a la matriz por delante, y nos dice cuantos elementos existen (tras añadirlo).

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    nuevo = matriz.unshift("cero");
    alert(nuevo);
    alert(matriz);
    </script>

    Nos devuelve: 5
    y: cero,uno,dos,tres,cuatro,cinco

    Slice nos permite obtener una matriz cuyos valores sean los de otra matriz, delimitados por un inicio y un fin.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho");
     
    nuevo = matriz.slice(1, 6);
    alert(nuevo);
    </script>

    Nos devuelve: dos,tres,cuatro,cinco,seis

    Splice nos permite introducir en una matriz valores nuevos, a partir de la posición que queramos, incluso si queremos sobreescribir algunos ya existentes. También se puede usar para borrar los valores existentes entre un rango de índices.

    Su sentencia es la siguiente:

    <script language="javascript">
    matriz.splice(inicio, borrados, valor1, valor2, ..., valorN);
    </script>

    Inicio es la posición en donde empezará a añadir o borrar.
    Borrados es el número de elementos que se quieren borrar. Si ponemos un 0, solamente añadirá valores.
    Valor1, valor2, …, valorN son los valores que deseamos añadir.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho");
     
    matriz.splice(2, 0, "dos y medio");
    //Simplemente, añadimos el valor "dos y medio" tras el segundo elemento, sin borrar nada.
    alert(matriz);
    </script>

    Nos devuelve: uno,dos,dos y medio,tres,cuatro,cinco,seis,siete,ocho

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho");
     
    matriz.splice(2, 4);
    //Borramos, a partir del segundo elemento (no incluido) 4 elementos.
    alert(matriz);
    </script>

    Nos devuelve: uno,dos,siete,ocho

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho");
     
    matriz.splice(1, 4, "two", "three", "four");
    //Eliminamos 4 a partir del primer elemento, y añadimos 3 más
    alert(matriz);
    </script>

    Nos devuelve: uno,two,three,four,seis,siete,ocho

    Reverse nos permite intercambiar el orden de los elementos de una matriz, de forma que el primero pasa a ser el último, el segundo el antepenúltimo.. etc.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    matriz.reverse();
    alert(matriz);
    </script>

    Nos devuelve: cuatro,tres,dos,uno

    Sort nos permite ordenar la matriz alfabéticamente.

    <script language="javascript">
    matriz = new Array("uno", "dos", "tres", "cuatro");
     
    matriz.sort();
    alert(matriz);
    </script>

    Nos devuelve: cuatro,dos,tres,uno

    str_ireplace nos permite, dada una cadena, encontrar una cadena de texto dentro de ella, y si existe, reemplazarla por otra.

    Su sentencia es:

    <?
    $nueva = str_ireplace($objeto, $reemplazo, $cadena);
    ?>

    Objeto es el string que queremos encontrar para cambiarlo.
    Remplazo es el string sustituto de lo que vamos a cambiar.
    Cadena es el string en donde va a buscar.
    Nueva es la nueva cadena de texto que se va a formar.

    Ejemplo

    <?
    $cadena = "Esta es una cadena de texto de ejemplo";
    $nuevaCadena = str_ireplace("de", "DE", $cadena);
    echo $nuevaCadena;
    ?>

    El resultado será:
    Esta es una caDEna DE texto DE ejemplo


    str_pad nos permite, dada una cadena, rellenarla con caracteres hasta alcanzar cierta longitud. Podemos elegir por donde queremos rellenarlo (izquierda, derecha, ambos), y también el/los carácter(es) con los que lo vamos a rellenar.

    Su sentencia es:

    <?
    $nuevo = str_pad($cadena, $longitud, ($caracter, ($lugar)));
    ?>

    Cadena es la cadena de texto en la que vamos a rellenar.
    Longitud es el número de caracteres que queremos tener al final, una vez rellenado.
    Caracter es el caracter (o caracteres) con los que vamos a rellenar nuestra cadena. Es opcional, por defecto se rellena con espacios en blanco.
    Lugar es por donde se va a rellenar la cadena, izquierda, derecha, o ambos.

    Ejemplo

    <?
    echo str_pad("ejemplo1", 15, "*");
    echo "<br>";
    echo str_pad("ejemplo2", 13, "=______________=", STR_PAD_LEFT);
    //Nota: aquí se nota que va a sobrar. Lo veremos reflejado en el resultado.
    echo "<br>";
    echo str_pad("ejemplo3", 20, "-", STR_PAD_BOTH);
     
    ?>

    Devuelve:

    ejemplo1*******
    =____ejemplo2
    ——ejemplo3——


    str_repeat nos permite multiplicar una cadena de texto tantas veces como queramos.

    Su sentencia es:

    <?
    echo str_repeat($cadena, $veces);
    ?>

    Cadena es la cadena de texto que se repetirá.
    Veces es el número de veces que se repetirá.

    Ejemplo

    <?
    echo str_repeat("(*)", 5);
    ?>

    Nos devuelve:

    (*)(*)(*)(*)(*)


    str_replace funciona de manera exactamente igual que str_ireplace, aunque a continuación escribiremos un ejemplo si se dieran matrices como cadena.

    <?
     
    $cadena[] = "Esta es una cadena de texto de ejemplo";
    $cadena[] = "Esta es otra cadena de texto dedede ejemplo";
    $nuevaCadena = str_ireplace("de", "DE", $cadena);
    echo $nuevaCadena[0];
    echo "<br>";
    echo $nuevaCadena[1];
     
    ?>

    Resultando:
    Esta es una caDEna DE texto DE ejemplo
    Esta es otra caDEna DE texto DEDEDE ejemplo


    str_rot13 nos permite cifrar mediante ROT13. Es un tipo de encriptación César (denominado así porque el primero en usar este tipo de encriptación fue Julio César. Se encarga de usar las letras del abecedario que se encuentran en otra posición). Es decir, que nos devuelve caracteres que se encuentran 13 posiciones antes (en el abecedario, sin contar la Ñ). Funciona con mayúsculas y minúsculas, y todo lo que no sean letras, se queda exactamente igual.

    Su sentencia es:

    <?
    echo str_rot13($cadena);
    ?>

    Cadena es la cadena de texto que se va a cifrar.

    Ejemplo

    <?
    echo str_rot13("abCD12ñ");
    ?>

    Nos devuelve:
    noPQ12ñ


    str_shuffle nos permite desordenar aleatoriamente los caracteres de una cadena.

    Su sentencia es:

    <?
    echo str_shuffle($cadena);
    ?>

    Cadena es la cadena de texto que se desordenará aleatoriamente.

    <?
    echo str_shuffle("ejemplo");
    echo "<br>";
    echo str_shuffle("ejemplo");
    echo "<br>";
    echo str_shuffle("ejemplo");
    ?>

    Nos devuelve:
    oejmlpe
    lojempe
    pjemeol

    preg_grep nos permite, a partir de un array, generar otra matriz que tenga los valores del array que coinciden con un patrón.

    Su sentencia es:

    <?
    $matriz = preg_grep($patron, $otraMatriz);
    ?>

    Patrón es el parámetro expresado mediante expresiones regulares que nos permite encontrar algo definido dentro de, en este caso, una matriz dada.
    otraMatriz es la matriz principal en la que tenemos diversos valores y en donde vamos a buscar, mediante el patrón, las coincidencias que queramos.

    Ejemplo

    <?
    $cadena[] = 'Al saludar decimos hola';
    $cadena[] = 'Ejemplo';
    $cadena[] = "Hola mundo";
    $patron = '/hola/';
    $matriz = preg_grep($patron, $cadena);
     
    foreach($matriz as $clave => $valor)
    echo "Valor: $valor<br>";
    ?>

    Nos devuelve:
    Valor: Al saludar decimos hola

    Si recordemos que en expresiones regulares se distinguen mayúsculas de minúsculas, y para evitar esa distinción ponemos una i al final del patrón, quedando: $patron = ‘/hola/i’;


    preg_quote nos devuelve una cadena de texto con los caracteres especiales de las expresiones regulares escapados, por lo que es útil para combinarlo con estas.
    Estos caracteres especiales son: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : –

    Su sentencia es:

    <?
    $resultado = preg_quote($cadena, ($caracter));
    ?>

    Cadena es la cadena de texto que introducimos.
    Caracter es un carácter que introducimos si también queremos escaparlo (es opcional).
    Resultado es la cadena de texto de salida, que se encuentra con los caracteres escapados (mediante la barra \)

    Ejemplo

    <?
    $cadena = 'Ejemplo-nuevo';
    echo preg_quote($cadena, 'e');
    ?>

    Nos devuelve:
    Ej\emplo\-nu\evo
    Porque escapa el carácter especial por defecto “-” y el que queriamos nosotros, ‘e’.


    preg_replace_callback nos permite, al igual que preg_replace, reemplazar datos, pero en este caso, lo podemos realizar a través de funciones, siendo el resultado más personalizable y complejo.

    Su sentencia es:

    <?
    $resultado = preg_replace_callback($patron, función, $input);
    ?>

    Patrón es la expresión que nos permite encontrar los datos que queremos.
    Función es el nombre de la función que utilizaremos.
    Input es el valor que introduciremos en la función anterior.

    Ejemplo

    <?
    $cadena = "El pasado día 15 hubo una revuelta";
     
    function cambiar($ejemplo) {
    return $ejemplo[0]+2;
    //ejemplo[0] vale 15, que es el número encontrado por el patrón.
    }
     
    echo preg_replace_callback("/\d{2}/", "cambiar", $cadena);
    //Se encarga de cambiar el número 15, por 15+2 (es decir, 17), junto con el resto de la cadena.
    ?>

    El objetivo de esta función es añadir 2 días más a la fecha que pone en la cadena. Nos devuelve:
    El pasado día 17 hubo una revuelta


    preg_split nos permite partir una cadena de texto, dando como resultado una matriz en donde se guarde en cada clave esos valores.

    Su sentencia es:

    <?
    $matriz = preg_split($patron, $cadena, ($limite, ($opciones)))
    ?>

    Patrón es el conjunto de expresiones regulares a partir de las cuales, cuando encuentre una coincidencia partirá la expresión, almacenando el resultado en una matriz.
    Cadena es la cadena de texto que deseamos partir.
    Límite es el número máximo de cadenas que queremos obtener. Este parámetro es opcional. Si se escribe un 0, o no se pone, se entiende que no hay límite.
    Opciones nos permite personalizar el resultado de la matriz resultante. Explicaré las 3 opciones más comunes.

    Ejemplo

    <?
    $cadena = preg_split("/(a)/", "Esta es una cadena de texto de ejemplo.", 0);
    //No me complico la vida con el patrón, pero podría usar cualquier tipo de expresión regular válida
    foreach($cadena as $clave => $valor)
    echo "Valor: $valor<br>";
    ?>

    Nos devuelve:
    Valor: Est
    Valor: es un
    Valor: c
    Valor: den
    Valor: de texto de ejemplo.

    Podemos observar que cada valor de la matriz, corresponde al trozo de cadena partida (sin el separador).

    Ahora explicaré las diferentes opciones que podríamos añadir:
    PREG_SPLIT_NO_EMPTY se encarga de que la matriz no tenga ningún elemento vacio. ¿Cómo es posible que tenga elementos vacios la matriz?
    Imaginemos que usamos de patrón un punto, y de cadena, una frase terminada en punto:
    “Esto es un ejemplo.”
    preg_split separa en dos trozos lo que hay antes, y lo que hay detrás del punto. Como detrás del punto no hay nada, se guarda un valor vacio (null).

    PREG_SPLIT_DELIM_CAPTURE se encarga de que nuestra matriz venga con los delimitadores como valores nuestra propia matriz (esto solo funciona si se han usado paréntesis en la expresión regular de patrón). Es decir, en nuestro anterior ejemplo nos devolvería lo siguiente:
    Valor: Est
    Valor: a
    Valor: es un
    Valor: a
    Valor: c
    Valor: a
    Valor: den
    Valor: a
    Valor: de texto de ejemplo.

    PREG_SPLIT_OFFSET_CAPTURE genera una matriz de dos dimensiones, de manera que, en cada coincidencia nos muestra la posición del primer carácter de la cadena partida. Lo veremos claramente mediante un ejemplo:

    <?
    $cadena = preg_split("/(a)/", "Esta es una cadena de texto de ejemplo.", 0, PREG_SPLIT_OFFSET_CAPTURE);
    foreach($cadena as $clave => $valor)
    echo "Valor: $valor[0] y $valor[1]<br>";
    ?>

    Nos devuelve:
    Valor: Est y 0
    Valor: es un y 4
    Valor: c y 11
    Valor: den y 14
    Valor: de texto de ejemplo. y 18

    Repito, el número obtenido es la posición del primer carácter de cada uno, respecto la cadena original.