Подтвердить что ты не робот

Как вставить строку внутри другой строки?

Просто посмотрел на функцию

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]".

спасибо

4b9b3361

Ответ 1

Вы ищете вставку строки, а не дополнение.

Заполнение делает строку заданной длиной, если она уже не на такой длине, поэтому, если вы должны дать длину пэда 3 "abcdef", ну это уже в 3, поэтому ничего не должно произойти.

Try:

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

Руководство по PHP на substr_replace

Ответ 2

вам нужно:

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

Ответ 3

Ба, я неправильно понял вопрос. Вам нужна одна вставка, а не вставлять все символы 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