首页 > 后端开发 > php教程 > 如何在 PHP 中有效转换智能引号:综合指南

如何在 PHP 中有效转换智能引号:综合指南

Mary-Kate Olsen
发布: 2024-10-22 06:55:30
原创
1149 人浏览过

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

在 PHP 中转换智能引号:综合指南

在 PHP 中,处理智能引号可能是一项复杂的任务。以下改进的函数可确保将所有类型的智能引号全面转换为常规引号:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

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

登录后复制

此函数处理智能引号的所有 Unicode 标准、Windows 代码页 1252 和 HTML 实体。它确保所有类型的智能报价都能准确转换为常规报价,为PHP中的报价转换提供全面的解决方案。

以上是如何在 PHP 中有效转换智能引号:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板