PHP:使用 preg_match() 匹配奇怪的破折号

发布于 2024-11-15 08:25:15 字数 337 浏览 2 评论 0原文

我在匹配这个字符时遇到了很大的问题: –

这是一种称为“破折号”U+2013 的东西(根据 http://www.fileformat.info/info/unicode/char/search.htm

在我的测试环境(windows和php 5.2.11)中它与 - 匹配,但是在生产服务器(ubuntu 和 php 5.3.2)上失败。即使 \x2013 也失败了。

有什么建议如何搭配这个奇怪的角色吗?或者如何配置 php 使其工作?

I have big problems to match this character: –

It's something called a "en dash" U+2013 (according to http://www.fileformat.info/info/unicode/char/search.htm)

It's a match with - in my test environment (windows and php 5.2.11) but fails on the production servers (ubuntu and php 5.3.2). Even \x2013 fails there.

Any suggestions how to match this strange character? Or how to config php to make it work?

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

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

发布评论

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

评论(2

忘你却要生生世世 2024-11-22 08:25:16

您还可以尝试在表达式上使用“u”标志,使表达式与 utf-8 兼容:正则表达式模式修饰符

所以你的表达式将是 "/[somepatter]/u"

You can also try use the "u" flag on the expression which makes the expression compatible with utf-8: regex pattern modifiers

so your expression would be "/[somepatter]/u"

一桥轻雨一伞开 2024-11-22 08:25:16
if (preg_match ('~\xe2\x80\x93~', $string))
{
    echo "En Dash found";
}

我相信你已经有了 UTF-8 编码,不是吗?

if (preg_match ('~\xe2\x80\x93~', $string))
{
    echo "En Dash found";
}

I believe you've got an UTF-8 encoding, don't you?

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