PHP split()函数不能分割小数点吗

<?$a=split(".","1.2.3");echo$a[0];?>这是什么情况,为什么输出的结果是空的。... <?
$a=split(".","1.2.3");
echo $a[0];
?>

这是什么情况,为什么输出的结果是空的。
展开
 我来答
607nojkhb
2011-07-21 · TA获得超过3621个赞
知道大有可为答主
回答量:4890
采纳率:0%
帮助的人:3111万
展开全部
很有意思的问题.
研究了一个多小时,终于找到了一个解决方案.
测试发现,preg_split对中文(多字节)的分隔符处理可能真的存在问题.
原因可能是正则匹配时不能正常分隔一个多字节字符(猜测).
但我实验用半角(英文)的分隔符就工作得很好.
于是
我在处理待分隔的文本前先对文本进行替换,把中文的句点和逗号都替换成英文半角的.然后再使用preg_split,暂时发现工作得不错.
以下是我的测试代码.
<?php
$test = <<<EOF
记者从有关人士处获悉,嫦娥二号发射的各项准备工作全部就绪,昨日经专家组评审,卫星、火箭、发射场、测控等系统均情况正常,具备发射条件。今天起,西昌卫星发射中心的加注手将为火箭加注燃料。

据一位航天专家介绍,因为地球和月球都在转动的缘故,所以地月之间的最佳交汇点每年仅出现3次,而这3次便是发射探月卫星的最佳节点,经过观测,今年3次的出现时间分别为10月1日、10月2日和10月3日,而最佳发射窗口则是1日晚7时,2日晚8时和3日晚10时,其中国庆日晚7时为佳中之佳。

针对媒体称10月1日发射窗口时间为晚6时59分57秒,该专家告诉本报记者,早3秒并非提前3秒发射,而是将这3秒时间预留出来,作为现场指挥员在发送倒计时口令的缓冲时间。(记者万强)

EOF;

//$input = $_POST[$content]; //........................获取要分割的字符串
$test = str_replace(",",',',$test);
$test = str_replace("。",'.',$test);
$mode="/[,|.]/s"; //......................用“逗号” 和 “句号” 分割字符串

$output = preg_split($mode,$test,-1);

print_r($output);
?>
============
楼主不防试试,我的代码是gb2312的字串.
经测试在,字符串为UTF8时,也可以正常工作.
heli730
2015-11-25 · TA获得超过748个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:321万
展开全部

首先要了解PHP split()函数是做什么用的:

split是用正则表达式,当然使用split可以处理一些复杂的字符串分析问题;

php5.3版本后split()这个函数就不建议被使用了;

举个例子:

<?php
$email = 'phpddt1990@163.com';
$arr = split('\.|@',$email);
print_r($arr);
?>

建议分割用explode函数执行效率更高:

<?php
$str = 'php,java,ruby';
$arr = explode(',',$str);
print_r($arr);
?>

explode函数只支持用字符分隔

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Phper
推荐于2016-06-21 · TA获得超过1210个赞
知道小有建树答主
回答量:625
采纳率:0%
帮助的人:672万
展开全部
//split是正则方法分割字符,正确的写法应是这样。
$a = split("\.","1.2.3");
echo $a[0];

//用字符分割应是用explode
$a = explode(".","1.2.3");
echo $a[0];
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天蝎神经侠侣
高粉答主

2015-09-01 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:693万
展开全部
//split是正则方法分割字符,正确的写法应是这样。
$a = split("\.","1.2.3");
echo $a[0];

//用字符分割应是用explode
$a = explode(".","1.2.3");
echo $a[0];
preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比PHP函数split()更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。
本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。
将 /etc/passwd 中的前四个字段分割出来:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangc_8866
推荐于2016-05-05 · TA获得超过1277个赞
知道小有建树答主
回答量:2825
采纳率:82%
帮助的人:297万
展开全部
split()PHP5.3 以上会报错不建议被使用,建议用explode 分隔有规律的。

$content=explode('.',$content);
print_r($content);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式