- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将一组字符串格式的 Unicode 代码点转换为实际字符和/或 HTML 实体(结果都可以)。
例如,如果我有以下字符串赋值:
$str = '\u304a\u306f\u3088\u3046';
我想使用 preg_replace
函数将这些 Unicode 代码点转换为实际字符和/或 HTML 实体。
根据我看到的其他类似问题的 Stack Overflow 帖子,我首先尝试了以下操作:
$str = '\u304a\u306f\u3088\u3046';
$str2 = preg_replace('/\u[0-9a-f]+/', '&#x$1;', $str);
但是,每当我尝试这样做时,我都会收到以下 PHP 错误:
Warning: preg_replace() [function.preg-replace]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u
我尝试了各种方法,例如将 u
标志添加到正则表达式或将 /\u[0-9a-f]+/
更改为 /\x{[0-9a-f]+}/
,但似乎没有任何效果。
此外,我还查看了我在网上可以找到的与将 Unicode 代码点转换为 PHP 中的实际字符相关的各种其他相关页面/帖子,但要么是我遗漏了一些关键的东西,要么是出了什么问题,因为我无法解决我遇到的问题。
有人能给我一个关于如何将一串 Unicode 代码点转换为实际字符和/或一串 HTML 实体的具体解决方案吗?
最佳答案
来自PHP manual :
Single and double quoted PHP strings have special meaning of backslash. Thus if
\
has to be matched with a regular expression\\
, then"\\\\"
or'\\\\'
must be used in PHP code.
首先,在您的正则表达式中,您只使用了一个反斜杠 (\
)。如 PHP 手册中所述,您需要使用 \\\\
来匹配文字反斜杠 ( with some exceptions)。
其次,您缺少原始表达式中的捕获组。 preg_replace()
在给定的字符串中搜索与提供的模式匹配的字符串,并返回字符串,其中与捕获组匹配的内容被替换为替换字符串。
具有正确转义和正确捕获组的更新后的正则表达式如下所示:
$str2 = preg_replace('/\\\\u([0-9a-f]+)/i', '&#x$1;', $str);
输出:
おはよう
表达式: \\\\u([0-9a-f]+)
\\\\
- 匹配文字反斜杠u
- 匹配文字 u
字符(
- 捕获组的开始
[0-9a-f]
- 字符类 -- 匹配数字 (0
- 9
) 或字母表(来自 a
- f
) 一次或多次)
- 捕获组结束i
修饰符 - 用于不区分大小写的匹配替换: &#x$1
&
- 文字 & 字符 (&
)#
- 文字井号 (#
)x
- 文字字符 x
$1
- 第一个捕获组的内容——在本例中,是 304a
等形式的字符串。关于php - 如何使用 PHP 的 preg_replace 函数将 Unicode 代码点转换为实际字符/HTML 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20931113/
有人好心地帮我解决了一个非常具体的用途的正则表达式,但我现在唯一的问题是正则表达式只替换了匹配的一个实例,而不是所有匹配(这是目标)。 我想要 的每个实例在此处找到“stylish-blue-but
PHP正则表达式替换实现是如何的呢?首先向你介绍下PHP preg_replace,PHP preg_replace的使用是我们实现的方法,那么对于PHP正则表达式替换实现过程我们从实例入手。 P
如何更改所有出现的 在文本文件的每一行中(每行总共有 5 个 )使用 preg_replace (用 | 代替)? 我的代码是: preg_replace("//", "|", $text); 最佳答
如何更改所有出现的 在文本文件的每一行中(每行总共有 5 个 )使用 preg_replace (用 | 代替)? 我的代码是: preg_replace("//", "|", $text); 最佳答
C#中的PHP preg_replace是什么? 我有一个字符串数组,我想用另一个字符串数组替换它。这是 PHP 中的示例。我如何在不使用 .Replace("old","new") 的情况下在 C#
如果有一件事我无法理解(或学习),那就是 preg_replace句法。我需要帮助删除 > 之间所有可能的符号(空格、制表符、换行符等)和 BANK ME 773264 17072012
preg_replace("/{{(.*?)}}/e","$$1",$rcontent); 请向我解释一下声明...我无法理解 最佳答案 考虑一个使用示例: $rcontent = "abc {{fo
我使用 netbeans,我尝试用 \\ 替换 \ 但它失败了,它无法转义 \\ 字符。 这不是 Netbeans 问题,而是 PHP 问题。 preg_replace('\','\\','text
给定如下字符串 $text= 'You must call [[abc\base\Object:: canGetProperty()|canGetProperty()]] or
非常简单的问题:如何preg_replace 反斜杠字符? 最佳答案 是的,但你需要逃避它。在正则表达式中使用它时,使用 \\ 在替换中使用它,使用 \\\\ (这将变成 \\将被解释为单个反斜杠)。
我正在使用一个 CMS 系统,该系统坚持在 之间放置大量垃圾标记和空标签。和 标签。 我正在尝试使用正则表达式来匹配和删除这些垃圾(遗憾的是修复 CMS 是不可能的)。 我似乎创建了一个有点太饿的正
我注意到替换的是 \那么该功能将无法按预期工作。所以我应该转义反斜杠。 还有哪些字符应该被转义?我没有成功找到任何文档。 我不能使用 preg_quote()因为它用于转义模式而不是替换。 再次编辑:
我正在尝试使用正则表达式从标签中提取信息,然后根据标签的各个部分返回结果。 preg_replace('//', analyze(array($0, $1, $2)), $src); 所以我正在抓取零
我想替换 html 字符串中给定的电话号码,例如 click here now! (123) -456-789 我认为最好的方法是找到所有看起来像电话号码的不同情况,例如: $pattern = *a
我很难尝试突出显示格式化电话号码的搜索结果。 $search_txt='5678'; // user generated (can be anything) $phone_number='(123)
我正在尝试使用 php 和 preg_replace 从 yell.com 中提取邮政编码。我成功提取了邮政编码,但只提取了地址。这是一个例子 $URL = "http://www.yell.com/
我想删除字符串上的所有 html 标签(包括它们的属性,如 class、src、id 等),但我想保留 , 和 标签。我将如何实现这一点? 如有任何建议,我们将不胜感激。 谢谢! 最佳答案 使用st
我正在努力完成以下任务: 搜索小写字母后跟大写字母。将其替换为小写字母,后跟 '. ',后跟大写字母。 例子: helloAre you there 应该变成: hello. Are you ther
好吧,我可能不会以正确的方式解决这个问题,但这里是.. 我有这个字符串,它接受一个链接并提取标签之间的文本... $string = $item; $pattern = '/\]*)\>([^/i';
我想用PHP替换一个词preg_replace .如果该词之前存在字符 />,则不应替换该词。 即 如果匹配就应该替换它 $word = "foo"; 如果匹配则不应替换 $word = "/>foo
我是一名优秀的程序员,十分优秀!