php自动报价,使用PHP转换所有类型的智能报价

小编典典

您需要这样的内容(假设输入UTF-8,而忽略CJK(中文,日文,韩文)):

$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 // U+0022 quotation mark (")

// U+0027 apostrophe (')

"\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"));

这里是背景:

每个Unicode字符都完全属于一个“常规类别”,其中可以包含引号字符的字符如下:

(这些页面可方便地检查您是否没有错过任何内容-

类别索引)

有时在启用Unicode的正则表达式中匹配这些类别很有用。

此外,Unicode字符具有“属性”,您感兴趣的是Quotation_Mark。不幸的是,这些不能在正则表达式中访问。

在Wikipedia中,您可以找到具有Quotation_Mark属性的字符组。最终参考是unicode.org上的PropList.txt,但这是一个ASCII文本文件。

如果您还需要翻译CJK字符,则只需获取它们的代码点,确定其翻译,并找到其UTF-8编码,例如,通过在fileformat.info中查找(例如,对于U +

301E:http

://www.fileformat.info/info/unicode/char/301e/index.htm)。

关于Windows代码页1252:Unicode定义了前256个代码点,以表示与ISO-8859-1完全相同的字符,但是ISO-8859-1通常与Windows代码页1252混淆,因此所有浏览器都呈现0x80-0x9F范围,在ISO-8859-1中为“空”(更确切地说:它包含控制字符),就像Windows代码页1252一样。Wikipedia页中的表列出了Unicode等效项。

注意:strtr()通常比慢str_replace()。使用您的输入和PHP版本为其计时。如果速度足够快,您可以直接使用地图,例如my $chr_map。

如果您不确定您的输入是UTF-8编码的,并且愿意假设输入不是UTF-8编码的,那么它是ISO-8859-1或Windows代码页1252,那么您可以在执行其他操作之前执行此操作:

if ( !preg_match('/^\\X*$/u', $str)) {

$str = utf8_encode($str);

}

警告:不过,这种正则表达式在极少数情况下可能无法检测到非UTF-8编码。例如:"Gruß…"/*CP-1252*/=="Gru\xDF\x85"看起来像此正则表达式的UTF-8(U

+ 07C5是N’ko数字5)。该正则表达式可以稍作增强,但是不幸的是,可以证明,对于编码检测问题,不存在完全可靠的解决方案。

如果要将Windows代码页1252产生的范围0x80-0x9F标准化为常规Unicode代码点,则可以执行此操作(并删除$chr_map上面的第一部分):

$normalization_map = array(

"\xC2\x80" => "\xE2\x82\xAC", // U+20AC Euro sign

"\xC2\x82" => "\xE2\x80\x9A", // U+201A single low-9 quotation mark

"\xC2\x83" => "\xC6\x92", // U+0192 latin small letter f with hook

"\xC2\x84" => "\xE2\x80\x9E", // U+201E double low-9 quotation mark

"\xC2\x85" => "\xE2\x80\xA6", // U+2026 horizontal ellipsis

"\xC2\x86" => "\xE2\x80\xA0", // U+2020 dagger

"\xC2\x87" => "\xE2\x80\xA1", // U+2021 double dagger

"\xC2\x88" => "\xCB\x86", // U+02C6 modifier letter circumflex accent

"\xC2\x89" => "\xE2\x80\xB0", // U+2030 per mille sign

"\xC2\x8A" => "\xC5\xA0", // U+0160 latin capital letter s with caron

"\xC2\x8B" => "\xE2\x80\xB9", // U+2039 single left-pointing angle quotation mark

"\xC2\x8C" => "\xC5\x92", // U+0152 latin capital ligature oe

"\xC2\x8E" => "\xC5\xBD", // U+017D latin capital letter z with caron

"\xC2\x91" => "\xE2\x80\x98", // U+2018 left single quotation mark

"\xC2\x92" => "\xE2\x80\x99", // U+2019 right single quotation mark

"\xC2\x93" => "\xE2\x80\x9C", // U+201C left double quotation mark

"\xC2\x94" => "\xE2\x80\x9D", // U+201D right double quotation mark

"\xC2\x95" => "\xE2\x80\xA2", // U+2022 bullet

"\xC2\x96" => "\xE2\x80\x93", // U+2013 en dash

"\xC2\x97" => "\xE2\x80\x94", // U+2014 em dash

"\xC2\x98" => "\xCB\x9C", // U+02DC small tilde

"\xC2\x99" => "\xE2\x84\xA2", // U+2122 trade mark sign

"\xC2\x9A" => "\xC5\xA1", // U+0161 latin small letter s with caron

"\xC2\x9B" => "\xE2\x80\xBA", // U+203A single right-pointing angle quotation mark

"\xC2\x9C" => "\xC5\x93", // U+0153 latin small ligature oe

"\xC2\x9E" => "\xC5\xBE", // U+017E latin small letter z with caron

"\xC2\x9F" => "\xC5\xB8", // U+0178 latin capital letter y with diaeresis

);

$chr = array_keys ($normalization_map); // but: for efficiency you should

$rpl = array_values($normalization_map); // pre-calculate these two arrays

$str = str_replace($chr, $rpl, $str);

2020-05-29

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM(IMX6U)裸机官方SDK包使用

参考:Linux之ARM(IMX6U)裸机C语言LED驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-11 11:20:17 网址:https://blog.csdn.net/weixin_45309916/article/details/107930284 目录1、I.MX6ULL 官…

h5是什么 www.php.cn,html meta标签的作用是什么?

什么是htmlmeta标签:htmlmeta标签的定义和用法:元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。标签位于文档的头部,不包含任何内容。标签的属性定义了与文档相关联的名称/值对。htmlm…

apt-get

apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 apt-get update 在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保…

Leaflet中添加的不同图层样式图标

如上图,具体问题请查看对应html页引用的basemaps的css样式。 如下图是本项目引用的css样式: .basemap img { width: 48px; border: 2px solid #FFF; margin: 0 2px; /*border-radius: 40px;*/ box-shadow: 0 1px 5px rgba(0,0,0,0.65)} 当css样式中的bor…

ARM(IMX6U)BSP工程文件管理(分文件编程)

参考:Linux之ARM(IMX6U)BSP工程管理实验 作者:一只青木呀 发布时间: 2020-08-15 23:41:37 网址:https://blog.csdn.net/weixin_45309916/article/details/108028093 目录1、工程管理简介1.1、创建bsp、imx6…

ubuntu16.04 安装 ipython

sudo apt-get install ipython3转载于:https://www.cnblogs.com/kanneiren/p/9970127.html

php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例

前几天在玩 FFmpeg 的时后,突然发现 Ubuntu 上多了 php5-ffmpeg 这个扩充套件,就想来玩玩看,看好不好用,有两个结论:读取影片取决于 FFmpeg 的支援性,如果想要什么格式都支援的话,建议自己重新编…

static 与 extern 关键字描述说明

使用static 定义的变量和函数只能用于本模块即为本文件 使用extern 定义的变量和函数可以用于其他模块的引用转载于:https://www.cnblogs.com/heidsoft/p/3420574.html

ARM(IMX6U)裸机C语言蜂鸣器驱动实验(BSP+SDK)

参考:Linux之ARM(IMX6U)裸机C语言蜂鸣器驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-16 14:47:23 网址:https://blog.csdn.net/weixin_45309916/article/details/108032168 目录1、有源蜂鸣…

《深入浅出nodejs》读书笔记(3)

挖坑,待填 转载于:https://www.cnblogs.com/yangzhou33/p/9972378.html

java金字塔的流程图,R中的金字塔图

Plotrix可能更容易,但可以反汇编ggplot图表,并将它们排列为金字塔图 . 使用 eipi10的数据(谢谢),并调整drawing-pyramid-plot-using-r-and-ggplot2中的代码,我为"males","females"和"country…

常用AT指令集 (转)

常 用 AT 命 令 手 册1、常用操作 1.1 AT 命令解释&#xff1a;检测 Module 与串口是否连通&#xff0c;能否接收 AT 命令&#xff1b; 命令格式&#xff1a;AT<CR> 命令返回&#xff1a;OK (与串口通信正常)&#xff08;无返回&#xff0c;与串口通信未连通&#xff09;…

ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机按键输入实验&#xff08;GPIO的输出与输入&#xff09; 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-17 21:43:37 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108057…

php 提取正文算法,PHP生成文章摘要算法_栈

之前网上复制了一个摘要算法&#xff0c;一直使用正常。最近写的一篇前500字里含有超链接&#xff0c;就导致摘要生成有误&#xff0c;从而影响了前端样式。所以后面打算自己写&#xff0c;想起大学编译原理匹配表达式的大致思想&#xff0c;就决定采用栈的思想试试。实现目标&…

设计模式 之 《组合模式》

GOOD&#xff1a;整体和部分可以被一致对待&#xff08;如WORD中复制一个文字、一段文字、一篇文章都是一样的操作&#xff09; #ifndef __COMPOSITE_MODEL__ #define __COMPOSITE_MODEL__ #include <iostream> #include <string> #include <vector> using n…

ARM(IMX6U)裸机主频和时钟

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机主频和时钟配置 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-28 10:39:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108237599 目录1、I.MX6U 时钟系统详解系统时钟…

POJ2318 TOYS

嘟嘟嘟 题面&#xff1a;先告诉你一个矩形抽屉的坐标&#xff0c;然后\(n\)个隔板将抽屉分成了\(n 1\)格&#xff08;格子从\(0\)到\(n - 1\)标号&#xff09;&#xff0c;接下来随机输入\(m\)个玩具的坐标。问最后每一个格子里有多少个玩具。 仔细想想就是一道计算几何入门题…

关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

灰色系统理论由我国著名学者邓聚龙教授于1982提出。灰色关联分析是灰色系统理论的一个分支&#xff0c;应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法。一、灰色关联分析法的建模过程灰色关联分析法的基本思想是根据各比…

C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

参考&#xff1a;C语言五大排序&#xff08;桶排序&#xff0c;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;快速排序&#xff09;动态演示 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-09-09 20:18:43 网址&#xff1a;https://blog.csdn.net/we…

FIFO分枝_限界算法

问题&#xff1a; 检索4-皇后问题的状态空间树如下图的基本过程。&#xff08;4-皇后问题解空间的树结构&#xff0c;结点按深度优先检索编号&#xff09; 如果按序扩展这些结点&#xff0c;则下一个E-结点就是结点2。扩展结点2后生成结点3&#xff0c;8和13。利用限界函数(同行…