¿Alternativa PHP split?


92

PHP me dice que la división está obsoleta, ¿cuál es el método alternativo que debería usar?

Respuestas:


131

explodees una alternativa. Sin embargo, si pretendía dividir una expresión regular , la alternativa es preg_split.


15
No estoy de acuerdo, explodeno es la alternativa, ya que no realiza la misma función que split, es decir: dividir una cadena por una expresión regular . Para ese propósito, use preg_split.
— nickf

1
@nickf: Eso es correcto, debería haber agregado eso inicialmente. Gracias
— Sarfraz

En varios lenguajes, el splitmétodo no siempre acepta expresiones regulares. En .NET, Python, los métodos String.Split()/ str.split()solo aceptan una cadena literal fija como una aguja. Por tanto, explodees correcto. Para aquellos que vienen de Java, JavaScript, Ruby, preg_splitpodrían resultar la solución.
— Wiktor Stribiżew

Es compatible con String.Split () de Visual Basic .NET. Niza
— Md Ashraful Islam

22

splitestá en desuso ya que es parte de la familia de funciones que utilizan expresiones regulares POSIX; esa familia entera está en desuso a favor de las preg_*funciones PCRE ( ).

Si no necesita la funcionalidad de expresión regular, entonces explodees una muy buena opción (y se habría recomendado splitincluso si no estuviera en desuso), si por otro lado necesita usar expresiones regulares, entonces la alternativa PCRE es simplemente preg_split.


16
  • preg_split si necesita dividir por expresiones regulares.
  • str_split si necesita dividir por caracteres.
  • explode si necesita dividir por algo simple.

También para el futuro, si alguna vez desea saber qué PHP quiere que use si algo está obsoleto, siempre puede consultar la función en el manual y le indicará las alternativas.


7

Quiero aclarar aquí que preg_split();está muy lejos de eso, pero explode();se puede usar de manera similar asplit();

la siguiente es la comparación entre split();y el explode();uso

¿Cómo se usó split ()?

<?php

$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo $month; // foo
echo $day; // *
echo $year;

?>

URL: http://php.net/manual/en/function.split.php

Cómo se puede usar explotar ()

<?php

$data = "04/30/1973";
list($month, $day, $year) = explode("/", $data);
echo $month; // foo
echo $day; // *
echo $year;

?>

URL: http://php.net/manual/en/function.explode.php

Así es como podemos usarlo :)


2

En su lugar, puede usar la función preg_match más fácil, es mejor y más rápida que todas las demás.

$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1']; 

Salida: Get this var



0

Si desea dividir una cadena en palabras, puede usar explode () o str_word_count ().


0

Tuve el mismo problema, pero mi código debe funcionar tanto en PHP 5 como en PHP 7 ..

Aquí está mi pieza de código, que resolvió esto .. Ingrese una fecha en formato dmY con uno de los delimitadores "/. -"

<?php
function DateToEN($date){
  if ($date!=""){
    list($d, $m, $y) = function_exists("split") ?  split("[/.-]", $date) : preg_split("/[\/\.\-]+/", $date);
    return $y."-".$m."-".$d;
  }else{
    return false;
  }
}
?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.