2017-11-10 9 views
0

で私はすぐに私が得るように、これは明らかに動作しませんPHPのSUBSTRは、長さ

a.b.c. 

a./a.b./a.b.c. 

に変換するために、このコード

substr(trim($val), 0, 2).'/'.substr(trim($val), 0, 4).'/'.trim($val); 

を使用していませんa.bb.cのような2桁の数字は、

a./a.bb/a.bb.c. 

(ドットが欠落している!)の代わりに

a./a.bb./a.bb.c. 

の/長さではなく、ドットに基づいていないトリム部品を抽出する方法はありますか?

+0

より良い 'split'とconcatを使用してください。 EDIT:Randallの方が正しいので、聞き取りやすくなります。 –

+1

'split'は償却されるので、' explode'を使う方が良いです。 – IncredibleHat

答えて

1

、あなたはそれを再帰的に行うことができます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); 

各ドットの後ろの文字の量とセグメントの量について、あなたは "ab"や "abc"や "aaa.bbb.ccc.ddd.eeeee"のようなものを扱うことができます。 )

+0

末尾の忘れた;) – IncredibleHat

+1

Uops!ありがとう;) –

+0

@roberto魅力的な作品。ありがとう! – george

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.