2009-09-03 132 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」 – 2009-09-03 11:07:54

+3

這是什麼OP問:-) – 2009-09-03 11:10:48

+0

是這是我想看的功能..謝謝。 – TigerTiger 2009-09-03 11:31:06

3

你需要:

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

是它的工作原理..但使用$ newstring = substr_replace($ orig_string,$ insert_string,$位置,0); – TigerTiger 2009-09-03 11:31:56

+0

呵呵?什麼/誰在使用'substr_replace'? – SilentGhost 2009-09-03 11:39:34

2

呸,我誤解了問題。你想要一個插入,而不是插入每個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 2009-09-03 11:12:16

+0

我修復了2個錯誤的功能。感謝這幫助我解決了我的問題。 – rynop 2013-10-22 14:15:54

+0

非常感謝.. !! – Ritesh 2017-03-18 08:19:08

相關問題