2009-09-03 139 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

相关问题