PHP拆分替代?


92

PHP告诉我不建议使用split,我应该使用哪种替代方法?

Answers:


131

explode是另一种选择。但是,如果您打算通过正则表达式进行拆分,则可以选择替代方法preg_split


15
我不同意- explode这不是替代方案,因为它执行的功能不相同split,即:用正则表达式分割字符串。为此,请使用preg_split
尼克

1
@nickf:没错,我最初应该添加。谢谢
Sarfraz

在各种语言中,该split方法并不总是接受正则表达式。在.NET,Python中,String.Split()/ str.split()方法仅接受固定的文字字符串作为指针。因此,explode是正确的。对于那些来自Java的人,JavaScript,Ruby preg_split可能会提供解决方案。
WiktorStribiżew16年

它与Visual Basic .NET的String.Split()兼容。尼斯
阿什拉富德伊斯兰教

22

split不推荐使用,因为它是使用POSIX正则表达式的函数系列的一部分;不赞成使用整个家庭,而希望使用PCRE(preg_*)函数。

如果您不需要正则表达式功能,那么这explode是一个很好的选择(split即使不推荐使用,也推荐这样做),另一方面,如果您确实需要使用正则表达式,那么PCRE替代项就是preg_split


16
  • preg_split 如果需要按正则表达式拆分。
  • str_split 如果需要按字符分割。
  • explode 如果您需要简单的划分。

同样在将来,如果您想知道如果不赞成使用某些东西,PHP希望您使用什么,您可以随时查阅手册中的函数,它将告诉您其他选择。


7

我想在这里清除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/en/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/en/function.explode.php

这是我们如何使用它:)


2

您可以使用更简单的函数preg_match代替,它比其他所有函数更快更好。

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

输出: Get this var



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;
  }
}
?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.