2009-09-03 25 views
30

Nur bei Funktion siehtWie füge ich eine Zeichenfolge in eine andere Zeichenfolge ein?

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

, die eine Schnur auf links, rechts oder beidseitig eine Eingabe zu Pad hilft.

Gibt es irgendeine PHP-Funktion, die ich verwenden kann, um eine Zeichenfolge in eine Eingabezeichenfolge einzufügen?

zum Beispiel ..

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

so, wenn ich Insert Index 3, geben fügt "@" nach ersten 3 meisten verfügbaren Zeichen und $input wird "[email protected]".

dank

Antwort

64

Sie suchen ein Zeichenfolge einfügen, keine Auffüllung.

Padding macht eine Zeichenkette eine feste Länge, wenn sie nicht schon in dieser Länge ist, also wenn Sie Pad-Länge 3 auf "abcdef" geben, dann ist es schon bei 3, also sollte nichts passieren.

Versuchen:

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

PHP manual on substr_replace

+6

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

+3

Welches ist das, was das OP gefragt hat :-) –

+0

ja das ist die Funktion die ich mir ansehen wollte .. danke. – TigerTiger

3

Sie brauchen:

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

ja es funktioniert .. aber mit $ newstring = substr_replace ($ orig_string, $ insert_string, $ Position, 0); – TigerTiger

+0

nicht wahr? Was/wer benutzt 'substr_replace'? – SilentGhost

2

Bah, ich die Frage falsch verstanden. Sie möchten eine einzelne Einfügung, nicht alle X Zeichen einfügen. Es tut uns leid.

Ich werde es hier lassen, damit es nicht verschwendet wird.

Sie reguläre Ausdrücke und einige Rechnungen verwenden können Sie Ihr gewünschtes Ergebnis zu erhalten (man würde es wahrscheinlich mit reinem regexp machen, aber das wäre komplex und weniger lesbar)

[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

ja single nur einfügen .. thnks für deine antwort .. und habe gerade noch eine andere antwort bemerkt – TigerTiger

+0

ich habe 2 fehler in der funktion behoben. Danke dafür hat mir geholfen, mein Problem zu lösen. – rynop

+0

Vielen Dank .. !! – Ritesh

Verwandte Themen