拆分成两个变量?

18

假设我有以下字符串: "44-xkIolspO"

我想返回两个变量:

$one = "44";
$two = "xkIolspO";

如何最好地做到这一点?


请记住,手册列出了您可能需要的每个函数:http://php.net/ref.strings - Jonah
除非你知道需要获取多少个变量,否则 list() 可能会变得毫无用处。手动赋值更好。在这种情况下,使用 foreach() 创建一个值数组。 - Fr0zenFyr
2个回答

41
尝试这个:

list($one, $two) = split("-", "44-xkIolspO", 2);

注:split()函数已经被废弃,建议使用explode()函数代替。
list($one, $two) = explode("-", "44-xkIolspO", 2);

1
很棒,除了split已被弃用。更具未来性的解决方案可能是explode - sdleihssirhc
使用 preg_split("/-/", "44-xkIolspO"); - Mihai Toader
1
更新了帖子以使用explode。希望它还没有被弃用。 - Chandu
1
根据 http://micro-optimization.com/explode-vs-preg_split 的说法,使用 preg_split 可以提高 69% 的速度。 - Mike Kormendy
1
@MikeKormendy 当你阅读这篇文章时,它说“f2比f1慢68.73%”,其中f2是preg_split,而f1是explode。因此,除非我漏掉了什么明显的东西,否则这篇文章是在说explode比preg_split快69%。 - philip

11

PHP有一个称为preg_split()的函数,它使用正则表达式分割字符串。这应该可以满足您的要求。

或者explode()可能更容易。

    $str = "44-xkIolspO";
    $parts = explode("-", $str);
    $one = $parts[0];
    $two = $parts[1];

我认为在这种情况下preg_split并不是必需的。与分隔符字符串相比,正则表达式解析效率要低得多。 - Jonah

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