split()函数为什么不能分割小数点?

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

蝴蝶不菲
浏览 597回答 3
3回答

慕桂英3389331

很有意思的问题.研究了一个多小时,终于找到了一个解决方案.测试发现,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时,也可以正常工作.

Helenr

//split是正则方法分割字符,正确的写法应是这样。$a = split("\.","1.2.3");echo $a[0];//用字符分割应是用explode$a = explode(".","1.2.3");echo $a[0];

饮歌长啸

//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 中的前四个字段分割出来:
打开App,查看更多内容
随时随地看视频慕课网APP