Bagaimana untuk Menukar Petikan Pintar kepada Petikan Biasa dalam PHP dengan Berkesan?

Barbara Streisand
Lepaskan: 2024-10-22 06:48:30
asal
832 orang telah melayarinya

How to Effectively Convert Smart Quotes to Regular Quotes in PHP?

Tukar Petikan Pintar dalam PHP: Penyelesaian Lengkap

Petikan pintar ialah tanda tipografi yang digunakan untuk menunjukkan pertuturan langsung atau petikan dalam teks. Mereka boleh meningkatkan kebolehbacaan dan menambah nuansa pada kandungan bertulis. Walau bagaimanapun, bekerja dengan petikan pintar dalam bahasa pengaturcaraan seperti PHP memerlukan pengendalian yang betul untuk memastikan paparan dan penukaran yang tepat.

Pernyataan Masalah

Fungsi PHP yang disediakan bertujuan untuk menukar pelbagai jenis daripada petikan pintar kepada petikan biasa (lurus). Walau bagaimanapun, ia tidak mempunyai sokongan menyeluruh untuk mengendalikan semua variasi sebut harga. Cabarannya terletak pada mengenal pasti semua kemungkinan aksara Unicode yang mewakili petikan pintar dan melaksanakan mekanisme penukaran yang mantap.

Penyelesaian

Untuk menukar semua jenis petikan pintar dengan berkesan, kami memerlukan untuk mencipta pemetaan komprehensif antara aksara Unicode yang berbeza dan rakan petikan biasa yang sepadan. Coretan kod berikut menyediakan penyelesaian yang dipertingkatkan:

<code class="php">$chr_map = array(
    // Windows codepage 1252
    "\xC2\x82" => "'", // U+0082⇒U+201A single low-9 quotation mark
    "\xC2\x84" => '"', // U+0084⇒U+201E double low-9 quotation mark
    "\xC2\x8B" => "'", // U+008B⇒U+2039 single left-pointing angle quotation mark
    "\xC2\x91" => "'", // U+0091⇒U+2018 left single quotation mark
    "\xC2\x92" => "'", // U+0092⇒U+2019 right single quotation mark
    "\xC2\x93" => '"', // U+0093⇒U+201C left double quotation mark
    "\xC2\x94" => '"', // U+0094⇒U+201D right double quotation mark
    "\xC2\x9B" => "'", // U+009B⇒U+203A single right-pointing angle quotation mark

    // Regular Unicode
    "\xC2\xAB"     => '"', // U+00AB left-pointing double angle quotation mark
    "\xC2\xBB"     => '"', // U+00BB right-pointing double angle quotation mark
    "\xE2\x80\x98" => "'", // U+2018 left single quotation mark
    "\xE2\x80\x99" => "'", // U+2019 right single quotation mark
    "\xE2\x80\x9A" => "'", // U+201A single low-9 quotation mark
    "\xE2\x80\x9B" => "'", // U+201B single high-reversed-9 quotation mark
    "\xE2\x80\x9C" => '"', // U+201C left double quotation mark
    "\xE2\x80\x9D" => '"', // U+201D right double quotation mark
    "\xE2\x80\x9E" => '"', // U+201E double low-9 quotation mark
    "\xE2\x80\x9F" => '"', // U+201F double high-reversed-9 quotation mark
    "\xE2\x80\xB9" => "'", // U+2039 single left-pointing angle quotation mark
    "\xE2\x80\xBA" => "'", // U+203A single right-pointing angle quotation mark
);

$chr = array_keys  ($chr_map);
$rpl = array_values($chr_map);
$str = str_replace($chr, $rpl, html_entity_decode($str, ENT_QUOTES, "UTF-8"));</code>
Salin selepas log masuk

Versi dipertingkat ini mempertimbangkan kedua-dua kod Windows 1252 dan aksara Unikod biasa, memastikan penukaran menyeluruh.

Pertimbangan Tambahan

  1. Pengekodan Unikod: Penyelesaian yang disediakan menganggap pengekodan UTF-8. Jika teks input dikodkan secara berbeza, ia harus ditukar kepada UTF-8 sebelum menggunakan penukaran.
  2. Penormalan: Jika input anda dijangka mengandungi aksara daripada pelbagai sumber, penormalan pengekodan mungkin diperlukan untuk memastikan penukaran yang konsisten.
  3. Prestasi: Untuk set data teks yang besar, pertimbangkan untuk mengoptimumkan proses penukaran dengan pra-mengira tatasusunan penggantian aksara. Ini boleh meningkatkan prestasi dengan mengelakkan panggilan fungsi berulang.

Dengan mengikut garis panduan ini, anda boleh melaksanakan mekanisme penukaran petikan pintar yang mantap dan komprehensif dalam PHP, memastikan pengendalian yang tepat bagi pelbagai variasi petikan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Petikan Pintar kepada Petikan Biasa dalam PHP dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber: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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!