Просто посмотрел на функцию
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"
.
благодаря
Вы ищете вставку строки, а не прописку.
Padding делает строку заданной длиной, если она еще не на такой длине, поэтому, если вы должны дать длину пэда 3 «abcdef», ну, это уже в 3, поэтому ничего не должно произойти.
Пытаться:
$newstring = substr_replace($orig_string, $insert_string, $position, 0);
Руководство по PHP на substr_replace
тебе нужно:
substr($input, 0, 3).$pad_str.substr($input, 3)
Ба, я неправильно понял вопрос. Вам нужна одна вставка, а не вставлять все символы 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