Alternativa split PHP?


92

PHP mi dice che la divisione è deprecata, qual è il metodo alternativo che dovrei usare?

Risposte:


131

explodeè un'alternativa. Tuttavia, se intendevi suddividere tramite un'espressione regolare , l'alternativa è preg_splitinvece.


15
Non sono d'accordo - explodenon è l'alternativa, poiché non svolge la stessa funzione di split, cioè: dividere una stringa con un'espressione regolare . A tale scopo, usa preg_split.
nickf

1
@nickf: È giustamente indicato, avrei dovuto aggiungerlo inizialmente. Grazie
Sarfraz

In varie lingue, il splitmetodo non accetta sempre espressioni regolari. In .NET, Python, i metodi String.Split()/ str.split()accettano solo una stringa letterale fissa come ago. Quindi, explodeè corretto. Per chi proviene da Java, JavaScript, Ruby, preg_splitpotrebbe essere la soluzione.
Wiktor Stribiżew

È compatibile con String.Split () di Visual Basic .NET. Bello
Md Ashraful Islam

22

splitè deprecato poiché fa parte della famiglia di funzioni che fanno uso di espressioni regolari POSIX; l'intera famiglia è sconsigliata a favore delle preg_*funzioni PCRE ( ).

Se non hai bisogno della funzionalità delle espressioni regolari, allora explodeè un'ottima scelta (e sarebbe stata consigliata splitanche se non fosse deprecata), se d'altra parte hai bisogno di usare espressioni regolari, allora l'alternativa PCRE è semplicemente preg_split.


16
  • preg_split se hai bisogno di dividere per espressioni regolari.
  • str_split se hai bisogno di dividere per caratteri.
  • explode se hai bisogno di dividere per qualcosa di semplice.

Anche per il futuro, se vuoi sapere cosa PHP vuole che tu usi se qualcosa è deprecato, puoi sempre controllare la funzione nel manuale e ti dirà delle alternative.


7

Voglio chiarire qui che preg_split();è lontano da esso ma explode();può essere utilizzato in modo simile asplit();

di seguito è riportato il confronto tra split();e explode();utilizzo

Come è stato utilizzato 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

Come si può usare explode ()

<?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

Ecco come possiamo usarlo :)


2

Puoi invece usare la funzione più semplice preg_match, è migliore e più veloce di tutte le altre.

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

Produzione: Get this var



0

Se vuoi dividere una stringa in parole, puoi usare explode () o str_word_count ().


0

Ho avuto lo stesso problema, ma il mio codice deve funzionare sia su PHP 5 che su PHP 7 ..

Ecco il mio pezzo di codice, che ha risolto questo problema .. Inserisci una data in formato dmY con uno dei delimitatori "/. -"

<?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;
  }
}
?>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.