Bagaimana Saya Boleh Menukar Pelbagai Petikan Pintar dalam PHP?

Susan Sarandon
Lepaskan: 2024-10-22 06:53:30
asal
390 orang telah melayarinya

How Can I Convert Various Smart Quotes in PHP?

Menukar Pelbagai Petikan Pintar dalam PHP

Petikan Pintar ialah varian biasa bagi tanda petikan standard yang digunakan dalam tipografi untuk meningkatkan kebolehbacaan dan estetika daya tarikan teks. Untuk memastikan penukaran yang betul bagi petikan pintar ini kepada petikan biasa apabila menggunakan teks, adalah penting untuk mempertimbangkan pelbagai jenis aksara petikan pintar yang digunakan dalam konteks yang berbeza.

Fungsi yang Dipertingkatkan untuk Penukaran Petikan Pintar:

Fungsi dipertingkat berikut menangani kelemahan fungsi asal yang anda sediakan dengan memasukkan pemetaan komprehensif untuk pelbagai aksara petikan pintar. Ia memanfaatkan kedua-dua peta aksara ($chr_map) dan tatasusunan pra-kira ($chr dan $rpl) untuk kecekapan optimum:

<code class="php">$chr_map = array(
    "\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

    "\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); // but: for efficiency you should
$rpl = array_values($chr_map); // pre-calculate these two arrays
$str = str_replace($chr, $rpl, html_entity_decode($str, ENT_QUOTES, "UTF-8"));</code>
Salin selepas log masuk

Fungsi yang dipertingkatkan ini menggunakan pendekatan yang mematuhi Unikod, meliputi rangkaian komprehensif watak petikan pintar. Dengan memanfaatkan tatasusunan pra-pengiraan, ia mengekalkan tahap kecekapan yang tinggi sambil memastikan penukaran petikan pintar yang tepat kepada petikan standard.

Pertimbangan Tambahan:

  • Pengekodan pengesanan: Jika pengekodan input tidak pasti, gunakan utf8_encode() untuk memastikan pengekodan UTF-8 sebelum menggunakan fungsi di atas.
  • Menormalkan kod Windows 1252: Untuk teks yang mungkin berasal daripada kod Windows 1252, pertimbangkan untuk menggunakan normalisasi peta untuk menukar titik kod tertentu kepada persamaan Unikodnya.
  • Sifat aksara Unikod: Menggunakan sifat aksara boleh meningkatkan lagi pengendalian petikan pintar, tetapi ketersediaannya dalam ungkapan biasa adalah terhad.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menukar Pelbagai Petikan Pintar dalam PHP?. 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!