mata teras
- Walaupun PHP dapat mengendalikan nama-nama pembolehubah multi-byte dan rentetan Unicode, bahasa itu tidak mempunyai sokongan Unicode yang komprehensif kerana merawat rentetan sebagai urutan karakter tunggal. Batasan ini memberi kesan kepada semua aspek operasi rentetan, termasuk pengekstrakan substring, menentukan panjang rentetan, dan segmentasi rentetan.
- Portable UTF-8 adalah perpustakaan ruang pengguna yang membawa sokongan Unicode ke aplikasi PHP. Ia dibina di atas MBSTRING dan ICONV, menyediakan kira-kira 60 fungsi manipulasi, ujian dan pengesahan rentetan berasaskan Unicode, dan menggunakan UTF-8 sebagai skema pengekodan watak utamanya. Perpustakaan sepenuhnya mudah alih dan boleh digunakan dengan mana -mana pemasangan Php 4.2 atau lebih baru.
- Perpustakaan UTF-8 mudah alih menyediakan pelbagai fungsi untuk memproses rentetan unicode, termasuk pengesahan input UTF-8, mengeluarkan bait yang tidak sah, pengekodan teks ke entiti HTML untuk mencegah serangan XSS, memangkas ruang, mengeluarkan ruang pendua, mewujudkan kemasukan UTF-8 Serpihan URL dan had terpaksa pada panjang aksara input. Ini memastikan bahawa dalam aplikasi yang dibolehkan Unicode, tumpuan beralih dari panjang byte dan byte kepada watak dan panjang watak.
$a∩b
$?xy
sokongan unicode dalam php $Δx
mbstring
Kekurangan PHP Sokongan Unicode/Multi-byte bermakna fungsi pemprosesan rentetan standard merawat rentetan sebagai urutan watak tunggal. Malah, manual PHP rasmi mentakrifkan rentetan dalam PHP sebagai "satu siri watak, salah satunya adalah sama dengan bait". PHP hanya menyokong aksara 8-bit, sementara Unicode (dan banyak set watak lain) mungkin memerlukan pelbagai bait untuk mewakili watak. Batasan PHP ini menjejaskan hampir semua aspek operasi rentetan, termasuk (tetapi tidak terhad kepada) pengekstrakan substring, menentukan panjang rentetan, segmentasi rentetan, pencampuran dan sebagainya. Usaha untuk menyelesaikan masalah ini bermula pada awal tahun 2005, tetapi pada tahun 2010, kerja -kerja membawa sokongan Unicode asli kepada PHP dihentikan dan ditangguhkan untuk pelbagai sebab. Oleh kerana sokongan Unicode asli di PHP boleh mengambil masa bertahun -tahun untuk dilaksanakan (jika ia berlaku), pemaju mesti bergantung pada sambungan yang ada seperti mbstring
dan iconv
untuk mengisi jurang ini, tetapi sambungan ini hanya menawarkan sokongan Unicode yang terhad. Perpustakaan ini bukan unicode-centric dan juga boleh ditukar antara pengekodan bukan unicode. Mereka membuat sumbangan positif untuk memudahkan pemprosesan rentetan Unicode. Walau bagaimanapun, lanjutan di atas juga mempunyai beberapa kelemahan. Mereka hanya menyediakan keupayaan pemprosesan rentetan Unicode yang terhad, dan tiada seorang pun daripada mereka didayakan secara lalai. Pentadbir pelayan mesti secara eksplisit membolehkan mana -mana atau semua sambungan untuk mengaksesnya melalui aplikasi PHP. Penyedia hosting yang dikongsi sering membuat keadaan lebih teruk dengan memasang satu atau dua sambungan, yang menjadikannya sukar bagi pemaju untuk bergantung kepada API yang selalu tersedia untuk memenuhi keperluan Unicode mereka. Namun, berita baiknya ialah PHP boleh mengeluarkan teks Unicode. Ini kerana PHP tidak benar -benar peduli sama ada kita menghantar teks bahasa Inggeris yang dikodkan dalam ASCII atau teks lain milik bahasa yang wataknya dikodkan dalam pelbagai bait. Mengetahui ini, pemaju PHP kini hanya memerlukan API yang menyediakan manipulasi rentetan berasaskan Unicode yang selesa.
Portable UTF-8
Penyelesaian baru -baru ini adalah untuk membuat perpustakaan ruang pengguna yang ditulis dalam PHP. Walaupun tahap pelayan/bahasa tidak mempunyai sokongan, perpustakaan ini dapat dengan mudah dibundel dengan aplikasi untuk memastikan kehadiran sokongan Unicode. Banyak aplikasi sumber terbuka sudah termasuk perpustakaan mereka sendiri seperti ini, dan banyak lagi menggunakan perpustakaan pihak ketiga percuma; Portable UTF-8 adalah perpustakaan ringan percuma yang dibina di atas mbstring
dan iconv
. Ia memanjangkan fungsi kedua-dua sambungan ini, menyediakan kira-kira 60 fungsi manipulasi, ujian dan pengesahan berasaskan Unicode; Seperti namanya, UTF-8 mudah alih menggunakan UTF-8 sebagai skim pengekodan watak utamanya. Perpustakaan menggunakan sambungan yang tersedia (mbstring
dan iconv
) untuk alasan kelajuan dan jambatan beberapa ketidakkonsistenan apabila menggunakannya secara langsung, tetapi jika tidak ada sambungan ini pada pelayan, ia akan kembali menggunakan php tulen UTF-8 yang ditulis secara rutin . Portable-UT8 sepenuhnya mudah alih dan boleh digunakan dengan mana-mana pemasangan Php 4.2 atau lebih baru.
Pemprosesan berdiri menggunakan UTF-8 mudah alih
editor teks dengan sokongan Unicode yang lemah boleh merosakkan teks apabila membaca teks, dan teks yang disalin dan disisipkan ke dalam bentuk web dari editor sedemikian mungkin menjadi sumber UTF-8 yang tidak sah untuk permohonan itu. Apabila memproses input pengguna yang dikemukakan, pastikan anda memastikan input adalah tepat selaras dengan jangkaan aplikasi. Untuk mengesan sama ada teks itu sah UTF-8, anda boleh menggunakan fungsi is_utf8()
perpustakaan.
if (is_utf8($_POST['title'])) { // 執(zhí)行某些操作... }
Memulihkan watak-watak dari bait tidak sah adalah mustahil, jadi mengeluarkan bait yang tidak diiktiraf sebagai aksara UTF-8 yang sah mungkin satu-satunya pilihan anda. Fungsi utf8_clean()
boleh digunakan untuk menghilangkan bait yang tidak sah.
$title = utf8_clean($_POST['title']);
Setiap watak Unicode boleh dikodkan sebagai entiti HTML yang sepadan, dan anda mungkin mahu menyandikan teks dengan cara ini untuk membantu mencegah serangan XSS sebelum mengeluarkannya ke penyemak imbas.
echo utf8_html_encode($title);
Biasanya, ruang dipotong pada awal dan akhir rentetan. Unicode menyenaraikan kira-kira 20 aksara ruang, dan beberapa watak kawalan berasaskan ASCII juga harus dianggap objek yang perlu dipangkas.
$title = utf8_trim($title);
Sebaliknya, pendua ruang tersebut mungkin wujud di tengah -tengah rentetan dan harus dipadamkan. Berikut ini menunjukkan cara menggunakan utf8_remove_duplicates()
dan utf8_ws()
dalam kombinasi:
$title = utf8_remove_duplicates($title, utf8_ws());
Penyelesaian tradisional untuk membuat serpihan URL untuk tujuan SEO menggunakan transliterasi dan menghilangkan semua aksara bukan ASCII dari serpihan. Ini menjadikan URL kurang berharga daripada itu. Walaupun URL dapat menyokong watak-watak yang dikodkan oleh UTF-8, tanpa penyingkiran atau transliterasi, kita boleh membuat coretan kaya yang mengandungi aksara dalam bahasa mana pun:
$slug = utf8_url_slug($title, 30); // 字符長(zhǎng)度30
Dari permulaan pengesahan input untuk menyimpan data ke pangkalan data, aplikasi yang dibolehkan Unicode memberi tumpuan kepada watak dan panjang aksara, bukan byte dan byte panjang. Peralihan fokus ini memerlukan antara muka baru untuk memahami perbezaan ini. Ia biasanya perlu untuk mengehadkan panjang aksara input, jadi jika input lebih daripada 60 aksara panjang, kami akan membuat substring.
if (utf8_strlen($title) > 60) { $title = utf8_substr($title, 0, 60); }
atau:
if (!utf8_fits_inside($title , 60)) { $title = utf8_substr($title, 0 ,60); }
Terdapat tiga cara yang berbeza untuk mengakses watak tunggal menggunakan perpustakaan mudah alih-UT8. Kita boleh menggunakan utf8_access()
untuk mengakses watak tunggal.
echo '第六個(gè)字符是:' . utf8_access($string, 5);
utf8_chr_map()
Membolehkan akses iteratif satu aksara menggunakan fungsi panggil balik.
utf8_chr_map('some_callback', $string);
kita boleh membahagikan rentetan ke dalam array aksara menggunakan utf8_split()
dan memproses elemen array sebagai watak tunggal.
array_map('some_callback', utf8_split($string));
Latihan Unicode juga memerlukan kita untuk mencari titik kod minimum/maksimum dalam rentetan, segmen rentetan, proses penanda pesanan byte, penukaran kes rentetan, rawak/pencampuran, penggantian, dll. Semua ini disokong oleh mudah alih-UT8.
Kesimpulan
Pembangunan Php 6 telah dihentikan, mengakibatkan keperluan jangka panjang untuk sokongan unicode asli ditangguhkan, yang penting untuk pembangunan aplikasi berbilang bahasa. Oleh itu, sambungan pelayan dan perpustakaan ruang pengguna seperti UTF-8 mudah alih memainkan peranan penting dalam membantu pemaju membuat web standard yang lebih baik untuk memenuhi keperluan tempatan.
(bahagian Soalan Lazim ditinggalkan di sini kerana batasan ruang)
Atas ialah kandungan terperinci Membawa Unicode ke PHP dengan UTF-8 mudah alih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
