2009-09-03 14 views
30

appena guardato funzioneCome inserire una stringa all'interno di un'altra stringa?

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

che aiuta a pad una stringa a sinistra, a destra o su entrambi i lati di una data di ingresso.

C'è qualche funzione di php che posso utilizzare per inserire una stringa all'interno di una stringa di input?

per esempio ..

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

quindi se io do indice inserto 3, inserisce "@" dopo la prima 3 rimasti maggior parte dei caratteri e $input diventa "[email protected]".

grazie

risposta

64

Siete alla ricerca di un inserto di stringa, non imbottito.

Il riempimento rende una stringa di una lunghezza impostata, se non è già di quella lunghezza, quindi se si dovesse dare una lunghezza di pad 3 a "abcdef", beh è già a 3, quindi non dovrebbe accadere nulla.

Prova:

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

PHP manual on substr_replace

+6

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

+3

Qual è l'OP che ha richiesto :-) –

+0

sì questa è la funzione che volevo osservare .. grazie. – TigerTiger

3

è necessario:

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

sì funziona .. ma usando $ nuovastringa = substr_replace ($ orig_string, $ insert_string, $ posizione, 0); – TigerTiger

+0

eh? cosa/chi sta usando 'substr_replace'? – SilentGhost

2

Bah, ho letto male la domanda. Vuoi un singolo inserto, non inserire tutti i caratteri X. Scusate.

Lascerò qui, quindi non è sprecato.

È possibile utilizzare le espressioni regolari e qualche calcolo per ottenere il risultato desiderato (che probabilmente potrebbe fare con puro regexp, ma che sarebbe più complessa e meno leggibile)

[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

sì unico inserto solo ... per la tua risposta .. e appena notato anche altre risposte – TigerTiger

+0

Ho corretto 2 bug nella funzione. Grazie per questo mi ha aiutato a risolvere il mio problema. – rynop

+0

Grazie mille .. !! – Ritesh

Problemi correlati