PHP分割字符串的替代方法?

94

PHP 告诉我 split 函数已经被废弃了,有什么替代方法可用吗?

8个回答

133

explode 是一种替代方法。然而,如果你想要通过正则表达式进行分割,可以使用另一种替代方法preg_split


15
我不同意 - explode 不是替代 split 的选择,因为它无法像 split 一样执行相同的功能,即:通过正则表达式分割字符串。为此,请使用 preg_split - nickf
1
@nickf:说得对,我一开始就应该把它加上。谢谢。 - Sarfraz
在各种编程语言中,split方法并不总是接受正则表达式。在.NET、Python中,String.Split() / str.split()方法只接受固定的、字面的字符串作为分隔符。因此,使用explode是正确的。对于那些来自Java、JavaScript、Ruby的开发者,preg_split可能是解决方案。 - Wiktor Stribiżew
它与Visual Basic .NET的String.Split()兼容。不错。 - Md Ashraful Islam

22

split已被弃用,因为它是使用POSIX正则表达式功能的函数族之一;整个函数族都被弃用,并推荐使用PCRE(preg_*)函数。

如果您不需要正则表达式功能,则explode是一个非常好的选择(即使split没有被弃用,它也会被推荐使用)。另一方面,如果您需要使用正则表达式,那么PCRE替代方案就是preg_split


17
  • 如果需要按照正则表达式分割字符串,可以使用preg_split
  • 如果需要按照字符分割字符串,可以使用str_split
  • 如果需要按照简单的分隔符分割字符串,可以使用explode

另外,如果您想知道某个函数是否已弃用,可查看官方手册中的函数部分,以获取其替代方案。


8
我在这里想要澄清的是,preg_split();与此相去甚远,但explode();可以像split();一样使用。
以下是split();explode();用法的比较。

split()如何使用

<?php

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

?>

网址:http://php.net/manual/zh/function.split.php

如何使用 explode() 函数

<?php

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

?>

网址: http://php.net/manual/zh/function.explode.php

以下是如何使用它的示例 :)


2
您可以使用更简单的 preg_match 函数,它比其他所有函数都更好、更快。
$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1']; 

输出:获取此变量

1

是的,我会使用 explode 或者你可以使用:

preg_split

这是 PHP 6 推荐的方法。preg_split 文档


0
如果你想把一个字符串分割成单词,你可以使用explode()或str_word_count()函数。

0

我遇到了同样的问题,但我的代码必须在PHP 5和PHP 7上运行。

这是我的代码片段,解决了这个问题。输入一个带有"/ . -"其中之一分隔符的dmY格式日期。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接