代码之家  ›  专栏  ›  技术社区  ›  TigerTiger

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

  •  30
  • TigerTiger  · 技术社区  · 15 年前

    只是看看函数

    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 回复  |  直到 11 年前
        1
  •  64
  •   DACrosby    11 年前

    您要查找的是字符串插入,而不是填充。

    填充使字符串成为一个集合长度,如果它还没有达到该长度,那么如果要将pad长度3设置为“abcdef”,那么它已经达到3,所以不应该发生任何事情。

    尝试:

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

    PHP manual on substr_replace

        2
  •  3
  •   SilentGhost    15 年前

    您需要:

    substr($input, 0, 3).$pad_str.substr($input, 3)
    
        3
  •  2
  •   rynop    11 年前

    啊,我误解了这个问题。您需要一次插入,而不是每X个字符插入一次。对不起的。

    我把它留在这儿,这样就不会浪费了。

    您可以使用正则表达式和一些计算来获得所需的结果(您可能可以使用纯regexp,但这将更复杂,可读性更低)。

    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