¿Alternativa PHP split?

92

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

igorgue
fuente

Respuestas:

131

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

Sarfraz
fuente
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.

salathe
fuente
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.

tplaner
fuente
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 :)

i.jolly
fuente
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

André Cotelo
fuente
0

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

Alexandrw
fuente
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;
  }
}
?>
Fernando
fuente