Ini harus menjadi jawaban yang diterima. Fungsi bawaan lebih diutamakan daripada fungsi yang dibuat pengguna setiap hari.
Benjam
13
Ya, argumen ke-4 menjadi "0" menyebabkan string replaecment dimasukkan tanpa menimpa salah satu string asli.
Buttle Butkus
7
Jawaban yang brilian. Tetapi untuk orang-orang malas (seperti saya) harus ada penjelasan singkat di posting Anda mungkin. Saya akan melakukannya sekarang dan menyalin'n'paste dari php.net: "Tentu saja, jika panjangnya nol maka fungsi ini akan memiliki efek memasukkan penggantian ke dalam string pada awal offset yang diberikan."
Wolfsblvt
7
Hati-hati: Fungsi substr_replace () tidak aman multibyte! $ Pos Anda mungkin berubah di tengah karakter UTF-8. Anda mungkin perlu menggunakan solusi @ tim-cooper tetapi menggunakan mb_substr ().
Gunakan fungsi stringInsert daripada fungsi putinplace. Saya menggunakan fungsi selanjutnya untuk mem-parsing permintaan mysql. Meskipun output tampak baik-baik saja, kueri menghasilkan kesalahan yang membutuhkan waktu beberapa saat untuk melacak. Berikut ini adalah versi saya dari fungsi stringInsert yang hanya membutuhkan satu parameter.
@minitech op mengatakan using strpos to get the position of a substring, jadi yang substringpertama datang. Dan dia tidak mengatakan hanya menemukan satu posisi.
xdazz
3
Saya punya satu fungsi lama untuk itu:
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
Ini adalah fungsi kecil yang kuat yang melakukan tugasnya dengan sempurna.
Hanya ingin menambahkan sesuatu: Saya menemukan jawaban tim cooper sangat berguna, saya menggunakannya untuk membuat metode yang menerima berbagai posisi dan melakukan penyisipan pada semuanya jadi di sini yaitu:
EDIT: Sepertinya fungsi lama saya diasumsikan$insertstrhanya 1 karakter dan array diurutkan. Ini berfungsi untuk panjang karakter sewenang-wenang.
Ini tidak bekerja. Offset Anda mengasumsikan $ interstr hanya sepanjang 1 karakter. Anda perlu menambahkan offset tergantung pada panjang insertstr, mulai dengan 0 dan tambahkan setelah substr. Selanjutnya Anda harus mengurutkan posisi rendah ke tinggi untuk membuatnya berfungsi. Saya mengoreksi fungsi Anda di sini, Anda mungkin ingin mengedit kode Anda: pastebin.com/g9ADpuU4
Matthias S
@Matthias terima kasih, lain kali edit atau saran edit, saya tidak melihat ini sampai 2 tahun kemudian
$posEndtidak dibutuhkan. Pertanyaannya adalah tentang memasukkan substring setelah posisi yang ditentukan.
Styx
Ya, tetapi saya membuat fungsi ini untuk proyek saya. di mana saya perlu di suatu tempat mengganti dan di lain hanya menyisipkan. Fungsi saya juga berfungsi untuk pertanyaan ini, jadi saya tidak mengerti mengapa Anda mengurangi saya?
Ivan Ivan
0
Jawaban aneh di sini! Anda dapat memasukkan string ke string lain dengan mudah dengan sprintf [tautan ke dokumentasi]. Fungsi ini sangat kuat dan dapat menangani banyak elemen dan tipe data lainnya juga.
$color ='green';
sprintf('I like %s apples.', $color);
Itu bagus. tetapi tidak menangani pendekatan terprogram. Kami biasanya memiliki 'I like apples.'variabel. Jadi kita harus memasukkan %sdulu ke dalam string, yang kembali ke masalah semula
substr
pada Manual PHPsumber
Cobalah, ini akan berfungsi untuk sejumlah substring
sumber
Gunakan fungsi stringInsert daripada fungsi putinplace. Saya menggunakan fungsi selanjutnya untuk mem-parsing permintaan mysql. Meskipun output tampak baik-baik saja, kueri menghasilkan kesalahan yang membutuhkan waktu beberapa saat untuk melacak. Berikut ini adalah versi saya dari fungsi stringInsert yang hanya membutuhkan satu parameter.
sumber
sumber
using strpos to get the position of a substring
, jadi yangsubstring
pertama datang. Dan dia tidak mengatakan hanya menemukan satu posisi.Saya punya satu fungsi lama untuk itu:
Ini adalah fungsi kecil yang kuat yang melakukan tugasnya dengan sempurna.
sumber
Ini adalah solusi sederhana saya juga menambahkan teks ke baris berikutnya setelah menemukan kata kunci.
Keluaran:
sumber
Hanya ingin menambahkan sesuatu: Saya menemukan jawaban tim cooper sangat berguna, saya menggunakannya untuk membuat metode yang menerima berbagai posisi dan melakukan penyisipan pada semuanya jadi di sini yaitu:
EDIT: Sepertinya fungsi lama saya diasumsikan
$insertstr
hanya 1 karakter dan array diurutkan. Ini berfungsi untuk panjang karakter sewenang-wenang.sumber
Sederhana dan cara lain untuk menyelesaikan:
sumber
sumber
$posEnd
tidak dibutuhkan. Pertanyaannya adalah tentang memasukkan substring setelah posisi yang ditentukan.Jawaban aneh di sini! Anda dapat memasukkan string ke string lain dengan mudah dengan sprintf [tautan ke dokumentasi]. Fungsi ini sangat kuat dan dapat menangani banyak elemen dan tipe data lainnya juga.
memberi Anda string
sumber
'I like apples.'
variabel. Jadi kita harus memasukkan%s
dulu ke dalam string, yang kembali ke masalah semula