How to insert a string inside another string?

后端 未结 3 840
被撕碎了的回忆
被撕碎了的回忆 2020-12-29 22:18

Just looked at function

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

which helps to pad some str

相关标签:
3条回答
  • 2020-12-29 22:28

    You're looking for a string insert, not a padding.

    Padding makes a string a set length, if it's not already at that length, so if you were to give a pad length 3 to "abcdef", well it's already at 3, so nothing should happen.

    Try:

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

    PHP manual on substr_replace

    0 讨论(0)
  • 2020-12-29 22:31

    you need:

    substr($input, 0, 3).$pad_str.substr($input, 3)
    
    0 讨论(0)
  • 2020-12-29 22:39

    Bah, I misread the question. You want a single insert, not insert every X characters. Sorry.

    I'll leave it here so it's not wasted.

    You can use regular expressions and some calculation to get your desired result (you probably could make it with pure regexp, but that would be more complex and less readable)

    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
    
    0 讨论(0)
提交回复
热议问题