mata utama
- watak multi-bait menggunakan satu hingga empat bait untuk menentukan watak-watak, yang penting untuk perwakilan angka bahasa dengan lebih daripada 256 aksara unik. Unicode, terutamanya UTF-8, adalah skema pengekodan yang paling biasa digunakan untuk watak-watak ini.
- PHP sendiri tidak direka untuk mengendalikan aksara multibyte. Untuk memproses watak -watak ini, satu set fungsi khas, fungsi mbstring, harus digunakan. Walau bagaimanapun, pengepala HTTP PHP juga mengandungi pengenal set aksara yang boleh mengatasi tag meta halaman.
- Sokongan multi-bait bukan ciri lalai PHP dan memerlukan konfigurasi semula. Untuk mengaktifkan fungsi MB, gunakan pilihan kompilasi-mbstring-enable-mbstring dan tetapkan pilihan konfigurasi runtime mbstring-encoding_translation.
- Beberapa arahan rentetan multibyte boleh didapati di PHP, seperti MB_CHECK_ENCODING, MB_STRLEN, dan MB_EREG_SEVE, yang digunakan untuk memeriksa sama ada urutan pengekodan tertentu sah, cari bilangan aksara dalam rentetan multibyte, dan melakukan carian tradisional. Versi multibyte.
Asas
kita semua tahu bahawa "bit" boleh menjadi 0 atau 1, manakala "bait" adalah gabungan lapan bit berturut -turut. Oleh kerana terdapat lapan bit bernilai dua kali dalam bait, byte boleh dikonfigurasikan dalam jumlah 256 mod yang berbeza (kepada kuasa ke-8 2). Watak yang berbeza boleh dikaitkan dengan setiap mod 8-bit yang mungkin. Letakkan bait ini bersama -sama dalam pesanan yang berbeza dan anda mempunyai cara anda sendiri untuk berkomunikasi. Ia tidak semestinya pintar, ia bergantung kepada siapa yang berada di kedua -dua hujungnya, tetapi komunikasi itu. Selagi kita dapat menyatakan watak dalam bahasa dengan 256 watak unik atau kurang, kita berjaya. Tetapi bagaimana jika kita tidak dapat menyatakan bahasa dengan hanya 256 aksara? Atau bagaimana jika kita perlu menyatakan pelbagai bahasa dalam dokumen yang sama? Hari ini, ketika kita mendigitalkan segala yang kita dapati, 256 aksara jauh dari cukup. Nasib baik, skim watak yang lebih baik memenuhi cabaran ini telah direka. Set supercharacter baru ini menggunakan satu hingga empat bait untuk menentukan watak -watak. Hari ini, lelaki besar dalam bidang pengekodan watak adalah Unicode, yang merupakan penyelesaian yang menggunakan pelbagai bait untuk mewakili watak. Ia dibangunkan oleh Konsortium Unicode dan datang dalam beberapa versi: UTF-32 (untuk Dreadnaught Class Starship), UTF-16 (untuk Enterprise di Star Trek: Dark Unbound) dan UTF-8 (kebanyakan kita harus menggunakannya secara sebenar dunia untuk aplikasi web kami). Seperti yang saya katakan, Unicode (termasuk UTF-8) menggunakan pelbagai konfigurasi byte untuk mewakili watak. UTF-8 menggunakan satu hingga empat bait untuk menghasilkan 1,112,064 corak untuk mewakili aksara yang berbeza. Ini "watak luas" mengambil lebih banyak ruang, tetapi UTF-8 cenderung untuk memproses lebih cepat daripada beberapa skim pengekodan lain. Mengapa semua orang memuji UTF-8? Sebahagian daripada ini adalah model popular yang diketengahkan dalam iklan yang dibolehkan UTF-8 yang dilihat pada ESPN dan TCM, tetapi terutamanya kerana UTF-8 meniru ASCII, yang menjejaki ASCII dengan tepat jika anda tidak melibatkan sebarang aksara khas.
Bagaimanakah ini mempengaruhi PHP?
Saya tahu apa yang anda fikirkan. Saya hanya perlu menetapkan watak yang ditetapkan kepada "UTF-8" dalam tag meta saya dan semuanya akan baik-baik saja. Tetapi ini tidak benar. Pertama, fakta mudah ialah PHP tidak direka bentuk untuk mengendalikan aksara multibyte, jadi menggunakan fungsi rentetan standard untuk beroperasi pada watak -watak ini boleh menghasilkan hasil yang tidak menentu. Apabila kita perlu memproses aksara multibyte ini, kita perlu menggunakan satu set fungsi khas: fungsi mbstring. Kedua, walaupun anda mengawal PHP, masih ada masalah. Header HTTP yang mengatasi komunikasi anda juga mengandungi identiti set aksara, yang mengatasi kandungan dalam tag meta halaman. Jadi, bagaimanakah PHP mengendalikan watak multibyte? Terdapat dua set fungsi yang mempengaruhi rentetan multibyte. Yang pertama adalah iconv. Bermula dengan versi 5.0, ini telah menjadi bahagian lalai bahasa, cara untuk menukar satu aksara yang ditetapkan ke perwakilan set aksara yang lain. Ini bukan apa yang akan kita bincangkan dalam artikel ini. Yang kedua ialah sokongan multibyte, yang merupakan satu siri arahan yang diawali dengan "MB_". Terdapat banyak arahan ini, dan semakan cepat menunjukkan bahawa sebahagian daripada mereka berkaitan dengan menentukan sama ada watak-watak yang sesuai berdasarkan skim pengekodan yang diberikan, sementara yang lain adalah fungsi berorientasikan carian yang serupa dengan sebahagian daripada ekspresi biasa PHP tetapi fungsi multibyte.
Dayakan sokongan multibyte untuk php
Sokongan multi-bait bukanlah ciri lalai PHP, tetapi ia juga tidak memerlukan kita memuat turun mana-mana perpustakaan atau sambungan tambahan; Malangnya, jika anda menggunakan versi PHP yang diuruskan, ini mungkin bukan sesuatu yang boleh anda lakukan. Gunakan fungsi phpinfo () untuk melihat konfigurasi anda. Tatal ke bawah ke output kira -kira separuh jalan, dan akan ada seksyen yang dipanggil "mbstring". Ini akan menunjukkan sama ada ciri -ciri asas diaktifkan. Untuk maklumat mengenai cara membolehkan ciri ini, anda boleh merujuk kepada manual. Ringkasnya, anda boleh mengaktifkan fungsi MB dengan menggunakan pilihan kompilasi-mbstring yang boleh dimuatkan dan menetapkan pilihan konfigurasi runtime mbstring-encoding_translation. Sudah tentu, penyelesaian terakhir adalah Php 6, kerana ia akan menggunakan IBM (sila lepaskan topi anda) Perpustakaan ICU untuk memastikan sokongan asli untuk set watak multibyte. Apa yang perlu kita lakukan ialah duduk dan tunggu, bukan? Tetapi sehingga itu, lihat sokongan multibyte yang ada sekarang.
Perintah rentetan multi-bait
Mungkin terdapat 53 arahan rentetan multibyte yang berbeza. Mungkin ada 54. Saya agak keluar dari jalan pada satu ketika, tetapi anda mendapat apa yang saya maksudkan. Tidak perlu dikatakan, kami tidak akan menerangkannya satu demi satu, tetapi untuk bersenang -senang, mari kita lihat dengan cepat beberapa.
- mb_check_encoding
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); $valid = mb_check_encoding($string, 'UTF-8'); echo ($valid) ? 'valid' : 'invalid'; ?>anda boleh mencari senarai pengekodan yang disokong dalam manual PHP.
- mb_strlen
strlen () mengembalikan bilangan bait dalam rentetan. Untuk ASCII, yang merupakan satu bait, ini menjadikannya bagus untuk mencari bilangan watak. Untuk rentetan multibyte, anda perlu menggunakan fungsi mb_strlen ().
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); $valid = mb_check_encoding($string, 'UTF-8'); echo ($valid) ? 'valid' : 'invalid'; ?>
- mb_ereg_search
mb_ereg_search () melakukan versi multibyte carian watak tradisional. Tetapi terdapat beberapa kaveat - anda perlu menentukan skema pengekodan menggunakan fungsi MB_REGEX_ENCODING (), ungkapan biasa tidak mempunyai pemisah (ia hanya bahagian corak), dan kedua -dua ungkapan biasa dan rentetan ditentukan menggunakan MB_EREG_SARTH_INIT ().
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); echo strlen($string); // 輸出 12 – 錯(cuò)誤! echo mb_strlen($string, 'UTF-8'); // 輸出 4 ?>
Adakah cukup?
Saya tidak tahu bagaimana anda, tetapi saya fikir dunia benar -benar memerlukan lebih banyak perkara yang mudah. Malangnya, pemprosesan multibyte tidak memenuhi keperluan ini. Tetapi buat masa ini, ini adalah sesuatu yang anda tidak boleh abaikan. Kadang -kadang anda tidak akan dapat melakukan pemprosesan rentetan PHP biasa (kerana anda cuba memproses aksara yang melebihi julat ASCII biasa (U 0000 - U 00FF). Ini bermakna anda perlu menggunakan fungsi berorientasikan MB_. Ingin mengetahui lebih lanjut? Serius, adakah anda mahu? Saya benar -benar fikir ini akan menakutkan anda. Saya tidak bersedia untuk ini. Masa saya telah tiba. Apakah pilihan terbaik anda? Lihat manual PHP. Oh, dan cuba sesuatu. Tidak ada apa -apa untuk menggantikan pengalaman sebenarnya menggunakan sesuatu.
(bahagian FAQ asal harus dikekalkan di sini kerana kandungannya sangat berkaitan dengan topik artikel dan akan mengurangkan kebolehbacaan selepas menulis semula.)
Atas ialah kandungan terperinci PHP Master | Bekerja dengan rentetan multibyte. 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

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()
