preg_split意外行为

时间:2015-01-06 23:20:19

标签: php preg-split

我使用preg_split作为以下内容:

<?php
$num = 99.14;
$pat = "[^a-zA-Z0-9]";
$segments = preg_split($pat, $num);
print_r($segments);

我预计$ segment将是一个类似array(99,14)的数组但是,它返回array(99.14)我不知道为什么preg_split会这样做,而它应该分割字符串的模式是任何特殊字符,即非字母数字。

查看此演示:http://codepad.org/MUusnwis

3 个答案:

答案 0 :(得分:4)

你必须像这样在你的正则表达式中添加分隔符:

<?php

    $num = 99.14;
    $pat = "/[^a-zA-Z0-9]/";
          //^------------^Delmimiter here
    $segments = preg_split($pat, $num);
    print_r($segments);

?>

输出:

Array ( [0] => 99 [1] => 14 )

修改

为什么OP将整个字符串放回数组中的问题很简单!如果您在此处阅读手册:http://php.net/manual/en/function.preg-split.php

在笔记下快速引用:

  

提示   如果匹配失败,将返回包含输入字符串的单个元素的数组。

答案 1 :(得分:0)

如果您只想沿小数分割,您还可以使用:

$array = explode('.', $num);

答案 2 :(得分:0)

您也可以使用T-Regx tool,这样就不会出现问题:)

不需要分隔符

ggmap(get_map("France", "Brazil", "Uruguay"))