亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Rumah pembangunan bahagian belakang tutorial php PHP Master | Bekerja dengan rentetan multibyte

PHP Master | Bekerja dengan rentetan multibyte

Feb 23, 2025 am 09:08 AM

PHP Master | Working with Multibyte Strings

bahasa nombor, sama ada dalam bahasa Inggeris, bahasa Jepun atau mana -mana bahasa lain, terdiri daripada banyak watak. Oleh itu, apabila berurusan dengan bahasa angka, soalan asas adalah bagaimana untuk mewakili setiap watak secara numerik. Pada masa lalu, kita hanya perlu mewakili watak -watak Inggeris, tetapi sekarang perkara -perkara yang sangat berbeza, dan hasilnya adalah skim pengekodan watak yang mempesonakan untuk mewakili watak -watak dalam pelbagai bahasa yang berbeza. Bagaimanakah PHP mengaitkan dan memproses skim yang berbeza ini?

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
  • Pemeriksaan fungsi
mb_check_encoding () untuk menentukan sama ada urutan pengekodan tertentu sah untuk skema pengekodan. Fungsi ini tidak akan memberitahu anda bagaimana rentetan dikodkan (atau skim mana yang akan berfungsi), tetapi ia akan memberitahu anda sama ada ia berfungsi untuk skim yang ditentukan.

<?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
Fungsi

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
Fungsi

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 – 錯誤!
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!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

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.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

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.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

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.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

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.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

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

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

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

Cara mengakses watak dalam rentetan dengan indeks dalam php Cara mengakses watak dalam rentetan dengan indeks dalam php Jul 12, 2025 am 03:15 AM

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.

See all articles