Esiste una funzione PHP che può farlo?Inserisci stringa nella posizione specificata
Sto usando strpos
per ottenere la posizione di una sottostringa e voglio inserire un string
dopo quella posizione.
Esiste una funzione PHP che può farlo?Inserisci stringa nella posizione specificata
Sto usando strpos
per ottenere la posizione di una sottostringa e voglio inserire un string
dopo quella posizione.
$newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);
$str = substr($oldstr, 0, $pos) . $str_to_insert . substr($oldstr, $pos);
ho fatto una funzione str_insert con questa linea, è più riutilizzabile. – djleop
str_replace($sub_str, $insert_str.$sub_str, $org_str);
Provalo, si lavorerà per qualsiasi numero di stringhe
<?php
$string = 'bcadef abcdef';
$substr = 'a';
$attachment = '+++';
//$position = strpos($string, 'a');
$newstring = str_replace($substr, $substr.$attachment, $string);
// bca+++def a+++bcdef
?>
Volevo solo aggiungere una cosa: ho trovato tim Cooper risposta molto utile, ho usato per rendere un metodo che accetta un array di posizioni e fa l'inserto su tutti ecco che è:
function stringInsert($str,$pos,$insertstr)
{
if (!is_array($pos))
$pos=array($pos);
$offset=-1;
foreach($pos as $p)
{
$offset++;
$str = substr($str, 0, $p+$offset) . $insertstr . substr($str, $p+$offset);
}
return $str;
}
Questo non funziona. Il tuo offset assume $ interstr per essere lungo solo 1 carattere. È necessario aggiungere l'offset a seconda della lunghezza di inserttstr, iniziare con 0 e aggiungere dopo il substr. Inoltre, dovresti ordinare le posizioni dal basso verso l'alto per farlo funzionare. Ho corretto la tua funzione qui, potresti voler modificare il tuo codice: http://pastebin.com/g9ADpuU4 –
Ho una mia vecchia funzione per quel:
function putinplace($string=NULL, $put=NULL, $position=false)
{
$d1=$d2=$i=false;
$d=array(strlen($string), strlen($put));
if($position > $d[0]) $position=$d[0];
for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i];
for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i];
return $string;
}
// Explanation
$string='My dog dont love postman'; // string
$put="'"; // put ' on position
$position=10; // number of characters (position)
print_r(putinplace($string, $put, $position)); //RESULT: My dog don't love postman
Questa è una piccola potente funzione che svolge il suo lavoro in modo impeccabile.
Questa era la mia soluzione semplice aggiungere testo alla riga successiva dopo aver trovato la parola chiave.
$oldstring = "This is a test\n#FINDME#\nOther text and data.";
function insert ($string, $keyword, $body) {
return substr_replace($string, PHP_EOL . $body, strpos($string, $keyword) + strlen($keyword), 0);
}
echo insert($oldstring, "#FINDME#", "Insert this awesome string below findme!!!");
uscita:
This is a test
#FINDME#
Insert this awesome string below findme!!!
Other text and data.
utilizzare la funzione stringInsert piuttosto che la funzione putinplace. Stavo usando la funzione successiva per analizzare una query mysql. Sebbene l'output sia andato bene, la query ha generato un errore che mi ha richiesto un po 'di tempo per rintracciare. Quanto segue è la mia versione della funzione stringInsert che richiede un solo parametro.
function stringInsert($str,$insertstr,$pos)
{
$str = substr($str, 0, $pos) . $insertstr . substr($str, $pos);
return $str;
}
Soluzione semplice. Buon lavoro. – jewelhuq
semplice e un altro modo per risolvere:
rispostefunction stringInsert($str,$insertstr,$pos)
{
$count_str=strlen($str);
for($i=0;$i<$pos;$i++)
{
$new_str .= $str[$i];
}
$new_str .="$insertstr";
for($i=$pos;$i<$count_str;$i++)
{
$new_str .= $str[$i];
}
return $new_str;
}
di strano! È possibile inserire facilmente stringhe in altre stringhe con sprintf [collegamento alla documentazione]. La funzione è estremamente potente e può gestire anche più elementi e altri tipi di dati.
$color = 'green';
sprintf('I like %s apples.', $color);
ti dà la stringa
I like green apples.
function insSubstr($str, $sub, $posStart, $posEnd){
return mb_substr($str, 0, $posStart) . $sub . mb_substr($str, $posEnd + 1);
}
'$ posEnd' non è necessario. La domanda riguardava l'inserimento della sottostringa dopo la posizione specificata. – Styx
Sì, ma ho creato questa funzione per il mio progetto. dove mi serviva in qualche posto in sostituzione e in un altro solo inserendo. La mia funzione funziona anche per questa domanda, quindi non capisco perché mi hai meno? –
Questa dovrebbe essere la risposta accettata. Le funzioni integrate hanno la precedenza sulle funzioni create dall'utente ogni giorno. – Benjam
Sì, il 4o argomento è "0" fa sì che la stringa di replaecment venga inserita senza sovrascrivere alcuna stringa originale. –
Risposta brillante. Ma per i pigri (come me) dovrebbe esserci una breve spiegazione nel tuo post forse. Io lo farò adesso e copieremo il php.net: "Ovviamente, se la lunghezza è zero, questa funzione avrà l'effetto di inserire la sostituzione nella stringa allo spostamento iniziale specificato." – Wolfsblvt