Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menyelesaikan masalah PHP memangkas aksara bercelaru

Bagaimana untuk menyelesaikan masalah PHP memangkas aksara bercelaru

藏色散人
Lepaskan: 2023-03-14 13:04:01
asal
2072 orang telah melayarinya

Pangkas PHP aksara bercelaru adalah kerana fungsi rentetan dalam PHP tidak selamat berbilangbait secara lalai Penyelesaiannya adalah untuk merangkum fungsi mb_trim untuk menyelesaikan aksara bercelaru.

Bagaimana untuk menyelesaikan masalah PHP memangkas aksara bercelaru

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.4, komputer Dell G3.

Bagaimana untuk menyelesaikan masalah PHP memangkas aksara bercelaru?

Pangkas PHP memintas aksara bercelaru

Sentiasa gunakan Trim untuk menapis rentetan pada permulaan dan akhir Penerangan rasmi Trim:

trim — Alih keluar aksara kosong (atau aksara lain) pada permulaan dan akhir rentetan

Saya menemui masalah yang sangat pelik hari ini:

<?php
$str = &#39;研发、产品、&#39;;
echo trim($str, &#39;、&#39;);
Salin selepas log masuk

Tebak ini akan kembali? "R&D, produk"? TIDAK, yang ini pelik kembali ke "R&D dan pengeluaran".

Mungkinkah kaedah pembukaan saya salah?

Selepas beberapa ujian, saya mendapati masalah yang sangat menarik.

<?php
echo trim(&#39;abacabb&#39;, &#39;ab&#39;);   //print &#39;c&#39;
Salin selepas log masuk

Saya pada asalnya menyangka ini akan mengembalikan acabb, tetapi ia hanya mengembalikan c. Ini adalah salah faham tentang fungsi pemangkasan.

Sebenarnya, contoh ini tersedia dalam dokumentasi rasmi, tetapi saya tidak mempedulikannya.

trim akan melingkari aksara pertama rentetan. Seperti dalam contoh di atas, proses pelaksanaan adalah seperti berikut:

Rentetan abacabb akan mula bergelung daripada subskrip 0. Jika aksara dalam ab wujud, ia akan dialih keluar Gelung akan berhenti apabila tiada aksara dalam ab.

Jadi pelaksanaannya ialah:

  • gelung a wujud dalam rentetan ab, keluarkannya, tinggalkan bacabb

  • gelung b wujud Dalam rentetan ab, keluarkannya, tinggalkan acabb

  • gelung a wujud dalam rentetan ab, keluarkannya, tinggalkan cabb

  • gelung c tidak Ia wujud dalam rentetan ab dan menghentikan gelung, jadi selepas mengalih keluar aksara pertama, apa yang kekal: cabb.

Tetapi trim menapis aksara pertama dan terakhir, jadi ia juga akan dialih keluar dari hujung dalam gelung.

  • Gelung b wujud dalam rentetan ab, keluarkannya dan teksi ditinggalkan

  • Gelung b wujud dalam rentetan ab, keluarkannya dan. teksi tinggal ca,

  • gelung a wujud dalam rentetan ab, keluarkannya, tinggalkan c,

  • gelung c tidak wujud dalam rentetan ab, gelung henti, jadi mengalih keluar aksara terminal meninggalkan: c.

Jadi selepas semuanya selesai, abacabb tinggal dengan c. Lihat di sini anda mempunyai sedikit pemahaman tentang fungsi trim.

Baiklah, mari kita bincangkan tentang masalah kod bercelaru.

Ini kerana dalam PHP, fungsi rentetan tidak selamat berbilangbait secara lalai. Jika anda memerlukan multibait-selamat, anda perlu menggunakan siri mb_ fungsi.

Kod heksadesimal bagi "," ialah 0xe3 0x80 0x81 Fungsi yang tidak selamat berbilangbait akan menganggapnya sebagai tiga aksara.

Kod perenambelasan "品" ialah 0xe5 0x93 0x81. 0x81 terakhir di sini hanya sepadan dan ditapis. Ini akan membawa kepada watak bercelaru.

ok, masalah telah dijumpai, trim tidak mempunyai fungsi mb, tetapi kita boleh merangkumnya sendiri. Fungsi mb_trim.

PS: Saya telah menggunakan trim untuk masa yang lama, tetapi saya tidak pernah benar-benar memahaminya. Ia masih penting untuk membaca dokumentasi rasmi.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah PHP memangkas aksara bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan