2009-09-03 8 views
30

a juste regardé la fonctionComment insérer une chaîne dans une autre chaîne?

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

qui aide à la ficelle pad à gauche, à droite ou des deux côtés d'une entrée donnée.

Existe-t-il une fonction php que je peux utiliser pour insérer une chaîne dans une chaîne d'entrée?

par exemple ..

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

donc si je donne l'indice d'insertion 3, il insère "@" après 3 premiers caractères et à gauche la plupart $input devient "[email protected]".

grâce

Répondre

64

Vous cherchez un insert de chaîne, pas un rembourrage. Rembourrage fait une chaîne une longueur fixe, si ce n'est pas déjà à cette longueur, donc si vous deviez donner une longueur de pad 3 à "abcdef", eh bien, il est déjà à 3, donc rien ne devrait arriver.

Essayez:

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

PHP manual on substr_replace

+6

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

+3

Ce qui est ce que l'OP a demandé :-) –

+0

oui c'est la fonction que je voulais regarder .. merci. – TigerTiger

3

dont vous avez besoin:

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

oui cela fonctionne .. mais en utilisant newstring $ = substr_replace (orig_string de $, insert_string de $, $ position, 0); – TigerTiger

+0

hein? quoi/qui utilise 'substr_replace'? – SilentGhost

2

Bah, j'ai mal lu la question. Vous voulez un seul insert, n'insérez pas tous les X caractères. Pardon.

Je vais le laisser ici afin qu'il ne soit pas gaspillé.

Vous pouvez utiliser des expressions régulières et un calcul pour obtenir le résultat souhaité (vous pourriez probablement faire avec regexp pur, mais ce serait plus complexe et moins lisible)

[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

oui insérer seul .. thnks pour votre réponse .. et juste remarqué une autre réponse ainsi – TigerTiger

+0

J'ai corrigé 2 bugs dans la fonction. Merci pour cela m'a aidé à résoudre mon problème. – rynop

+0

Merci beaucoup .. !! – Ritesh

Questions connexes