如何在另一个字符串中插入一个字符串?

时间:2009-09-03 10:56:11

标签: php string

只看功能

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变为"abc@def"

谢谢

3 个答案:

答案 0 :(得分:64)

您正在寻找字符串插入,而不是填充。

填充使一个字符串成为一个设定的长度,如果它不在那个长度,所以如果你给一个填充长度3到“abcdef”,那么它已经是3,所以什么都不应该发生。

尝试:

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

PHP manual on substr_replace

答案 1 :(得分:3)

你需要:

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

答案 2 :(得分:2)

呸,我误解了这个问题。您想要一个插入,而不是每X个字符插入一次。遗憾。

我会留在这里,所以不会浪费。

您可以使用正则表达式和一些计算来获得所需的结果(您可能可以使用纯正则表达式,但这会更复杂,更不易读取)

vinko@mithril:~$ 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;
}

?>
vinko@mithril:~$ php re.php
123@123@123
123@12
123$12