PHP substr 按字符串,而不是按长度
PHP substr by string, not by length
我正在使用这个代码
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.
有没有办法 extract/trim 部分不是基于长度,而是基于点?
<?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.
使用 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" 让脚本为您完成所有工作 ;)
我正在使用这个代码
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.
有没有办法 extract/trim 部分不是基于长度,而是基于点?
<?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.
使用 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" 让脚本为您完成所有工作 ;)