Как вставить строку внутри другой строки?
Просто посмотрел на функцию
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]"
.
спасибо
Ответы
Ответ 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