替换php中的多个utf-8字符

发布于 2024-12-21 13:34:59 字数 561 浏览 1 评论 0原文

我有一个包含多个 utf-8 字符的字符串,如下所示

\u00b4, \u2019, \u201b, \u2032

我想将它们替换为以下 html 字符

'

我正在使用以下 php 代码来替换这些字符

$search  = "(\\u00b4|\\u2019|\\u201b|\\u2032)"; 
$replace = "'";

$result = preg_replace($search, $replace, $string);

我不断收到以下警告,并且 $result 为 null

Warning:  preg_replace(): Compilation failed: PCRE does not support \\L, \\l, \\N, \\U, or \\u at offset 2 in /...

我没有知道该怎么做。任何有关如何继续替换这些 utf8 字符的想法都将受到赞赏!

I have a string with multiple utf-8 characters that look like this

\u00b4, \u2019, \u201b, \u2032

I want to replace these with the following html character

'

I'm using the following php code to replace these

$search  = "(\\u00b4|\\u2019|\\u201b|\\u2032)"; 
$replace = "'";

$result = preg_replace($search, $replace, $string);

I keep getting the following warning, and $result is null

Warning:  preg_replace(): Compilation failed: PCRE does not support \\L, \\l, \\N, \\U, or \\u at offset 2 in /...

I have no idea what to do. Any ideas on how to proceed with replacing these utf8 characters is appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月棠 2024-12-28 13:34:59

当对特定字符代码进行 preg 匹配时,您需要使用 \x 十六进制表示法,而不是 unicode 表示法 - 这些看起来像 unicode 值。

$search  = "(\xb4|\x2019|\x201b|\x2032)"; 

When doing a preg match on specific character codes, you need to use the \x hexadecimal notation, not unicode notation -- those look like unicode values.

$search  = "(\xb4|\x2019|\x201b|\x2032)"; 
和影子一齐双人舞 2024-12-28 13:34:59
$unicode = "\u00b4 \u2019 \u201b \u2032";
$unicode = preg_replace('/\\\\u[^ ]+/im', "'\r\n", $unicode);
echo $unicode;

您没有正确转义反斜杠,您需要 2 个额外的反斜杠:

\\\\
$unicode = "\u00b4 \u2019 \u201b \u2032";
$unicode = preg_replace('/\\\\u[^ ]+/im', "'\r\n", $unicode);
echo $unicode;

You didn't escape the backslashes correctly, you need 2 extra backslashes:

\\\\
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文