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?

igorgue
fonte

Respostas:

131

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

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

Salathe
fonte
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.

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

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

Andre Cotelo
fonte
1

Sim, eu usaria explodir ou você poderia usar:

preg_split

Qual é o método recomendado com PHP 6. preg_split Documentation

Soluções Addo
fonte
0

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

Alexandrw
fonte
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;
  }
}
?>
Ferdinand
fonte