Alternativa de divisão do PHP?


92

O PHP está me dizendo que a divisão está obsoleta, qual é o método alternativo que devo usar?

Respostas:


131

explodeé uma alternativa. No entanto, se você pretendia dividir por meio de uma expressão regular , a alternativa é preg_split.


15
Discordo - explodenão é a alternativa, pois não desempenha a mesma função que split, ou seja: dividir uma string por uma expressão regular . Para esse propósito, use preg_split.
nickf

1
@nickf: Correto, eu deveria ter adicionado isso inicialmente. Obrigado
Sarfraz

Em várias linguagens, o splitmétodo nem sempre aceita expressões regulares. Em .NET, Python, os métodos String.Split()/ str.split()aceitam apenas uma string literal fixa como agulha. Portanto, explodeestá correto. Para quem vem de Java, JavaScript, Ruby, preg_splitpode ser a solução.
Wiktor Stribiżew

É compatível com String.Split () do Visual Basic .NET. Nice
Md Ashraful Islam

22

splitestá obsoleto por fazer parte da família de funções que fazem uso de expressões regulares POSIX; essa família inteira foi preterida em favor das preg_*funções PCRE ( ).

Se você não precisa da funcionalidade de expressão regular, então explodeé uma escolha muito boa (e teria sido recomendada splitmesmo se não fosse obsoleta), se por outro lado você precisa usar expressões regulares, então a alternativa PCRE é simples preg_split.


16
  • preg_split se você precisar dividir por expressões regulares.
  • str_split se você precisar dividir por caracteres.
  • explode se você precisar dividir por algo simples.

Também para o futuro, se você quiser saber o que o PHP deseja que você use se algo for descontinuado, você pode sempre verificar a função no manual e ele lhe mostrará alternativas.


7

Quero esclarecer aqui que preg_split();está longe disso, mas explode();pode ser usado de maneira semelhante asplit();

a seguir está a comparação entre split();eexplode(); uso

Como foi dividido () usado

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

Como explode () pode ser usado

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

Aqui está como podemos usá-lo :)


2

Você pode usar a função mais fácil preg_match, é melhor e mais rápida do que todas as outras.

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

Resultado: Get this var



0

Se você quiser dividir uma string em palavras, você pode usar explode () ou str_word_count ().


0

Tive o mesmo problema, mas meu código deve funcionar no PHP 5 e no PHP 7.

Aqui está meu código, que resolveu isso .. Insira uma data no formato dmY com um dos 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;
  }
}
?>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.