我正在使用此代码
substr(trim($val), 0, 2).'/'.substr(trim($val), 0, 4).'/'.trim($val);
转换
a.b.c.
到
a. / a.b. / a.b.c.
当我得到像a.bb.c.这样的两位数时,这显然不起作用,导致
a. / a.bb / a.bb.c.
(缺少点!)而不是
a. / a.bb. / a.bb.c.
有没有办法提取/修剪不是基于长度的部分,而是基于点?
答案 0 :(得分:1)
使用explode和foreach可以使其递归,如下所示:
$val = 'aa.bv.cc.dd';
$vals = explode('.',$val);
$result = [];
foreach($vals as $k => $v) {
if(trim($v) === '') continue;
$result[] = ($k > 0 ? $result[$k-1] : '').$v.'.';
}
echo implode(' / ',$result);
通过这种方式,您不必担心每个点后的字母数量以及细分数量,您可以处理类似" a.b"或" a.b.c"或" aaa.bbb.ccc.ddd.eeeee"让脚本为你完成所有工作;)
答案 1 :(得分:0)
<?php
$data='a.b.c.';
$data=explode('.',$data);
$newData=array(
$data[0].'. ',$data[0].'.'.$data[1].'. ',$data[0].'.'.$data[1].'.'.$data[2].'.'
);
$newData = implode("/", $newData);
echo $newData;
输出是:
a. /a.b. /a.b.c.