2009-09-03 19 views
30

はちょうどパッドに左、右の上、または与えられた入力の両側にいくつかの文字列を助け機能別の文字列の中に文字列を挿入するには?

str_pad($input, $pad_length, $pad_str, [STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH]) 

を見ました。

入力文字列内に文字列を挿入するために使用できるphp関数はありますか?例えば

..

$input = "abcdef"; 
$pad_str = "@"; 

私は挿入インデックス3を得た場合ので、それは最初の3の後"@"は、ほとんどの文字を残し、$input"[email protected]"なっ挿入します。あなたが必要とする

おかげ

答えて

64

を(おそらく、純粋な正規表現でそれを作ることができるが、それはより複雑で読みにくくなります)詰め物ではなく、文字列の挿入物です。

パッドの長さがまだ設定されていない場合は、その長さになります。パッド長3を "abcdef"に設定すると、既に3になっているので、何も起こりません。

試してみてください。

$newstring = substr_replace($orig_string, $insert_string, $position, 0); 

PHP manual on substr_replace

+6

substr_replace( "123123123"、 "@"、3,0)は "123 @ 123123" –

+3

です。 –

+0

これは私が見てみたかった機能です。 – TigerTiger

3

substr($input, 0, 3).$pad_str.substr($input, 3) 
+0

はい、それは動作します..しかし、$をnewstring = substr_replace使用して($ orig_string、$ insert_string、$の位置を、0); – TigerTiger

+0

? what/whoは 'substr_replace'を使用していますか? – SilentGhost

2

フンは、私が質問を読み違えます。あなたは1つの挿入をしたい、すべてのX文字を挿入しない。ごめんなさい。

私はここに残しておきますので、無駄ではありません。

あなたが希望する結果を得るために、正規表現といくつかの計算を使用することができますあなたが探している

[email protected]:~$ more re.php 
<?php 

$test1 = "123123123"; 
$test2 = "12312"; 

echo puteveryXcharacters($a,"@",3); 
echo "\n"; 
echo puteveryXcharacters($b,"@",3); 
echo "\n"; 
echo puteveryXcharacters($b,"$",3); 
echo "\n"; 

function puteveryXcharacters($str,$wha,$cnt) { 
    $strip = false; 
    if (strlen($str) % $cnt == 0) { 
    $strip = true; 
    } 
    $tmp = preg_replace('/(.{'.$cnt.'})/',"$1$wha", $str); 
    if ($strip) { 
    $tmp = substr($tmp,0,-1); 
    } 
    return $tmp; 
} 

?> 
[email protected]:~$ php re.php 
[email protected]@123 
[email protected] 
123$12 
+0

はい単一の挿入だけ..あなたの答えのためのthnks ..と同様に別の答えに気づいた – TigerTiger

+0

私は2つのバグを修正しました。このおかげで、私の問題を解決するのに役立ちました。 – rynop

+0

ありがとう.. !! – Ritesh

関連する問題