PHP 告诉我 split 函数已经被废弃了,有什么替代方法可用吗?
split
已被弃用,因为它是使用POSIX正则表达式功能的函数族之一;整个函数族都被弃用,并推荐使用PCRE(preg_*
)函数。
如果您不需要正则表达式功能,则explode
是一个非常好的选择(即使split
没有被弃用,它也会被推荐使用)。另一方面,如果您需要使用正则表达式,那么PCRE替代方案就是preg_split
。
preg_split
。str_split
。explode
。另外,如果您想知道某个函数是否已弃用,可查看官方手册中的函数部分,以获取其替代方案。
preg_split();
与此相去甚远,但explode();
可以像split();
一样使用。split();
和explode();
用法的比较。
<?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
<?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
以下是如何使用它的示例 :)
$var = "<tag>Get this var</tag>";
preg_match("/<tag>(.*)<\/tag>/", $var , $new_var);
echo $new_var['1'];
获取此变量
我遇到了同样的问题,但我的代码必须在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;
}
}
?>
explode
不是替代split
的选择,因为它无法像split
一样执行相同的功能,即:通过正则表达式分割字符串。为此,请使用preg_split
。 - nickfsplit
方法并不总是接受正则表达式。在.NET、Python中,String.Split()
/str.split()
方法只接受固定的、字面的字符串作为分隔符。因此,使用explode
是正确的。对于那些来自Java、JavaScript、Ruby的开发者,preg_split
可能是解决方案。 - Wiktor Stribiżew