PHP substr by string,而不是length

时间:2017-11-10 14:15:08

标签: php substr

我正在使用此代码

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.

有没有办法提取/修剪不是基于长度的部分,而是基于点?

2 个答案:

答案 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.