Başka bir dize içinde bir dize eklemek nasıl?

3 Cevap php

Sadece işlevi baktı

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

hangi hak veya belirli bir girdinin her iki tarafında, sol ped bazı dize olur.

Ben bir giriş dizesi içinde bir dize eklemek için kullanabileceğiniz herhangi bir php fonksiyonu var mı?

örneğin ..

$input = "abcdef";
$pad_str = "@";

Ben Dizin Ekle 3 vermek eğer öyleyse, o "@" sonra ekler 3 en Sola karakterler ve $input olur ilk "abc@def".

teşekkürler

3 Cevap

Bir dize insert, bir dolgu arıyoruz.

O uzunlukta zaten değilse Geciktirme dize, bir dizi uzunluğu yapar, yani "abcdef" bir ped uzunluğu 3 vermek olsaydı, iyi o kadar şey olması gerektiğini, 3'te zaten.

Deneyin:

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

PHP manual on substr_replace

İhtiyacınız:

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

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

Boşa değil yani burada bırakacağım.

İstediğiniz sonucu elde etmek için düzenli ifadeler ve bazı hesaplama kullanabilirsiniz (muhtemelen saf regexp ile bunu yapabilir, ama bu daha karmaşık ve daha az okunabilir olacaktır)

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