Pertanyaan Anda tidak jelas / ambigu. Anda menggunakan istilah tersebut remove, tetapi sepertinya Anda maksudkan extractsehingga string yang ditargetkan dapat disimpan dalam database.
mickmackusa
@Makyen Saya merasa cukup yakin bahwa Anda telah merusak pertanyaan untuk membuat banyak jawaban benar. Pikirkan tentang hal ini: mengapa OP ingin menyimpan REGISTER heredalam database?
mickmackusa
2
@mickmackusa menghapus bisa identik dengan mengambil dari, yaitu mengambil 11223344 dari string, saya gagal melihat masalah di sini. Paling buruk itu ambigu, tentu saja tidak "dirusak"
Nick
Baca versi pra-perusak. @Sekarang stackoverflow.com/posts/2192170/revisi Kebenaran akan berubah pikiran. Saya akan senang melihat pertanyaan ini ditutup sebagai Tidak Jelas.
mickmackusa
2
@mickmackusa saya lakukan ... Saya gagal melihat maksud Anda. Jika Anda memiliki masalah besar dengan cara itu seperti yang tertulis mengapa tidak memperbaikinya sendiri
Nick
Jawaban:
220
Jika Anda secara khusus menargetkan "11223344", gunakan str_replace:
Tidak yakin mengapa jawaban ini diposting, ini merupakan duplikat yang lebih panjang dari jawaban Dominic dan duplikat yang lebih pendek dari jawaban Roland ...
menemukan Diperlukan. Menentukan nilai yang akan ditemukan
ganti Diperlukan. Menentukan nilai untuk mengganti nilai dalam find
string Diperlukan. Menentukan string yang akan dicari
menghitung opsional. Variabel yang menghitung jumlah penggantian
Sebagai per OP contoh:
$Example_string ="REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344','', $Example_string);// will leave you with "REGISTER here"// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ',' ', $Example_string_PART_REMOVED));// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces// will leave you with "REGISTER here"
Pengganti @ElijahLynn mengharuskan Anda untuk menghapus beberapa hal, perubahan di masa depan, atau kebisingan akan pecah. Melakukan ini melalui _replace tetapi _match akan terus bekerja.
TravisO
@ TravisO baik ya, tapi tidak. Kedua hal tersebut hampir sama dengan implementasi fungsi yang bijaksana, dan peluang bahwa perubahan di masa depan memengaruhi mereka adalah sama . Ada kemungkinan yang sama untuk perubahan di masa mendatang hanya pada _match, menjadikan penggunaan ini tidak valid dan _replace masih berfungsi dengan baik. Selain itu, versi biasanya sangat jeli untuk tidak mengerem fungsi sebelumnya, jika memungkinkan.
CT.
Anda tidak perlu grup tangkap di sini. Bahkan, menggunakan grup tangkap tidak perlu membengkak $matcharray. Hapus tanda kurung kemudian akses melalui $match[0].
mickmackusa
5
substr () adalah fungsi php bawaan yang mengembalikan bagian dari sebuah string. Substr fungsi () akan mengambil string sebagai input, bentuk indeks di mana Anda ingin string yang akan dipangkas. dan parameter opsional adalah panjang substring. Anda dapat melihat dokumentasi yang tepat dan contoh kode di http://php.net/manual/en/function.substr.php
Bagaimana Anda mengusulkan agar OP harus menggunakan petunjuk umum Anda untuk mencapai hasil yang diinginkan?
mickmackusa
Saya menemukan jawaban ini tidak jelas dan bernilai rendah.
mickmackusa
1
Secara dinamis, jika Anda ingin menghapus (a) bagian dari (a) indeks tetap string, gunakan fungsi ini:
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/function removeFromString(string $string, $index,string $delimiter =" "):string{
$stringParts = explode($delimiter, $string);// Remove indexes from string partsif(is_array($index)){foreach($index as $i){
unset($stringParts[(int)($i)]);}}else{
unset($stringParts[(int)($index)]);}// Join all parts together and return itreturn implode($delimiter, $stringParts);}
Untuk tujuan Anda:
remove_from_str("REGISTER 11223344 here",1);// Output: REGISTER here
Salah satu penggunaannya adalah untuk mengeksekusi string seperti perintah, yang Anda tahu strukturnya.
Ghostdog sudah menyarankan teknik meledak-meledak, tapi aku tidak bisa membayangkan menghibur teknik panjang seperti itu untuk operasi dasar seperti itu.
Sama sekali tidak ada alasan untuk meneruskan array ke preg_replace()dalam kasus ini. Juga tidak ada manfaat menggunakan kelompok tangkap.
mickmackusa
Saya setuju. Array ditambahkan hanya untuk kenyamanan. Itu bisa diabaikan. itu tidak akan membahayakan. Menambahkan grup tangkap untuk mengecualikan angka. Ini berfungsi sesuai pertanyaan yang diplotkan. Dan modifikasi lebih lanjut dan fine tuning dapat dilakukan berdasarkan individu.
arango_86
Maksud saya adalah, ada inklusi yang tidak perlu dalam cuplikan Anda yang tidak masuk akal untuk dimasukkan.
Tidakkah akan mengembalikan "REGISTER__di sini", dengan dua kosong (anggap garis bawah sebagai spasi, komentar tidak akan mengizinkan saya dua spasi berikutnya)? Karena spasi sebelum dan sesudah "(. *)".
TechNyquist
6
Jawaban ini SETIDAKNYA 100% salah. Bukti: 3v4l.org/LDLEM mengapa jawaban ini memiliki 15 UV?
remove
, tetapi sepertinya Anda maksudkanextract
sehingga string yang ditargetkan dapat disimpan dalam database.REGISTER here
dalam database?Jawaban:
Jika Anda secara khusus menargetkan "11223344", gunakan
str_replace
:sumber
Anda dapat menggunakan str_replace () , yang didefinisikan sebagai:
Jadi, Anda dapat menulis kode sebagai:
Jika Anda perlu pencocokan yang lebih baik melalui ekspresi reguler, Anda dapat menggunakan preg_replace () .
sumber
dengan asumsi 11223344 tidak konstan
sumber
Sebagai per OP contoh:
sumber
Saat Anda membutuhkan pencocokan berbasis aturan, Anda perlu menggunakan regex
Itu akan cocok dengan set angka pertama, jadi jika Anda perlu mencoba lebih spesifik:
sumber
$match
array. Hapus tanda kurung kemudian akses melalui$match[0]
.substr () adalah fungsi php bawaan yang mengembalikan bagian dari sebuah string. Substr fungsi () akan mengambil string sebagai input, bentuk indeks di mana Anda ingin string yang akan dipangkas. dan parameter opsional adalah panjang substring. Anda dapat melihat dokumentasi yang tepat dan contoh kode di http://php.net/manual/en/function.substr.php
CATATAN: indeks untuk string dimulai dengan 0.
sumber
Secara dinamis, jika Anda ingin menghapus (a) bagian dari (a) indeks tetap string, gunakan fungsi ini:
Untuk tujuan Anda:
Salah satu penggunaannya adalah untuk mengeksekusi string seperti perintah, yang Anda tahu strukturnya.
sumber
Cuplikan berikut akan mencetak "DAFTAR di sini"
Preg_replace () API menggunakan kami seperti yang diberikan di bawah ini.
sumber
preg_replace()
dalam kasus ini. Juga tidak ada manfaat menggunakan kelompok tangkap.Lakukan yang berikut
Ini akan mengembalikan "REGISTERdi sini"
atau
Ini akan mengembalikan "DAFTAR di sini"
sumber