2009-09-03 31 views
30

Chỉ cần nhìn vào chức năngLàm thế nào để chèn một chuỗi bên trong một chuỗi khác?

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

giúp để pad một số chuỗi trên trái, phải hoặc trên cả hai mặt của một đầu vào nhất định.

Có chức năng php nào mà tôi có thể sử dụng để chèn chuỗi vào trong chuỗi đầu vào không?

ví dụ ..

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

vì vậy nếu tôi cho chèn chỉ số 3, nó chèn "@" sau đầu tiên 3 trái hầu hết các nhân vật và $input trở thành "[email protected]".

nhờ

Trả lời

64

Bạn đang tìm kiếm một chuỗi chèn, không phải là một padding.

Đệm làm cho một chuỗi có độ dài được đặt, nếu nó không có chiều dài đó, vì vậy nếu bạn đã cung cấp cho một chiều dài pad 3 đến "abcdef", tốt nó đã ở 3, vì vậy không có gì nên xảy ra.

Hãy thử:

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

PHP manual on substr_replace

+6

substr_replace ("123123123", "@", 3,0) là "123 @ 123123" –

+3

Đó là những gì OP hỏi :-) –

+0

có đây là chức năng tôi muốn xem .. cảm ơn. – TigerTiger

3

bạn cần:

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

có nó hoạt động .. nhưng sử dụng $ newstring = substr_replace ($ orig_string, $ insert_string, $ position, 0); – TigerTiger

+0

huh? những gì/người đang sử dụng 'substr_replace'? – SilentGhost

2

Bah, tôi misread câu hỏi. Bạn muốn có một chèn, không chèn mỗi ký tự X. Lấy làm tiếc.

Tôi sẽ để nó ở đây để nó không bị lãng phí.

Bạn có thể sử dụng biểu thức thông thường và một số tính toán để có được kết quả mong muốn của bạn (bạn có thể có thể làm cho nó với regexp tinh khiết, nhưng đó sẽ là phức tạp hơn và ít có thể đọc được)

[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 
+0

có chỉ chèn duy nhất .. thnks cho câu trả lời của bạn .. và chỉ nhận thấy một câu trả lời khác cũng – TigerTiger

+0

Tôi đã sửa 2 lỗi trong hàm. Cảm ơn vì điều này đã giúp tôi giải quyết vấn đề của mình. – rynop

+0

Cảm ơn rất nhiều .. !! – Ritesh

Các vấn đề liên quan