Cara Menukar Petikan Pintar dalam PHP: Panduan Komprehensif

Mary-Kate Olsen
Lepaskan: 2024-10-22 06:55:30
asal
919 orang telah melayarinya

How to Effectively Convert Smart Quotes in PHP: A Comprehensive Guide

Tukar Petikan Pintar dalam PHP: Panduan Komprehensif

Dalam PHP, mengendalikan petikan pintar boleh menjadi tugas yang rumit. Fungsi yang dipertingkatkan berikut memastikan penukaran menyeluruh bagi semua jenis petikan pintar kepada petikan biasa:

<code class="php">function convert_smart_quotes($string)
{
    $unicode_map = array(
        "\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

        // 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
    );

    // Map special HTML entities
    $html_entities = array(
        "&amp;#8216;" => "'", // left single quotation mark
        "&amp;#8217;" => "'", // right single quotation mark
        "&amp;#8220;" => '"', // left double quotation mark
        "&amp;#8221;" => '"' // right double quotation mark
    );

    // Map Windows CP1252 entities
    $windows_cp1252 = array(
        "&amp;lsquo;" => "'", // left single quotation mark
        "&amp;rsquo;" => "'", // right single quotation mark
        "&amp;ldquo;" => '"', // left double quotation mark
        "&amp;rdquo;" => '"', // right double quotation mark
        "&amp;mdash;" => ' - ', // em dash
        "&amp;ndash;" => '- ' // en dash
    );

    // Unicode first
    $string = str_replace(
        array_keys  ($unicode_map),
        array_values($unicode_map),
        html_entity_decode($string, ENT_QUOTES, "UTF-8")
    );

    // Windows CP1252 next
    $string = str_replace(
        array_keys  ($windows_cp1252),
        array_values($windows_cp1252),
        $string
    );

    // Finally, HTML entities
    $string = str_replace(
        array_keys  ($html_entities),
        array_values($html_entities),
        $string
    );

    return $string;
}</code>
Salin selepas log masuk

Fungsi ini mengendalikan semua piawaian Unikod, halaman kod Windows 1252 dan entiti HTML untuk petikan pintar. Ia memastikan bahawa semua jenis petikan pintar ditukar dengan tepat kepada petikan biasa, memberikan penyelesaian komprehensif untuk penukaran petikan dalam PHP.

Atas ialah kandungan terperinci Cara Menukar Petikan Pintar dalam PHP: Panduan Komprehensif. 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!