PHP正则表达式显示问题

发布于 2024-11-01 01:40:34 字数 293 浏览 0 评论 0原文

我正在尝试创建一个用于对书名进行排序的字段,该字段会删除前导的“A,An,The”并将其附加到逗号和空格之后的强字符上。因此,“The Road”将变成“Road, The”,

听起来很简单,但下面的代码中有一些东西会导致 IE(没有其他浏览器)吐出一大堆乱码。

 $node_field[0]['value'] = preg_replace(
     '/^(A|An|The|a|an|the) (.*)/', 
     "$2\x00,$1",
     $node->title
 );

I'm trying to create a field for sorting book titles which strips the leading "A, An, The" and appends it to the strong after a comma and a space. Thus "The Road" would become "Road, The"

Sounds simple, but there's something in the code below which causes IE (no other browsers) to spit out a huge block of gibberish.

 $node_field[0]['value'] = preg_replace(
     '/^(A|An|The|a|an|the) (.*)/', 
     "$2\x00,$1",
     $node->title
 );

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

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

发布评论

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

评论(1

才能让你更想念 2024-11-08 01:40:34

你应该使用更像

$node_field[0]['value'] = preg_replace(
 '/^(A|An|The) (.*)/i', 
 "$2, $1",
 $node->title
);

如果我理解正确的话,这应该将任何“A ...”,“An ...”或“The ...”更改为“...,A”,“...,An ”和“...,The”,分别。

正则表达式模式中斜杠后面的 i 使其不区分大小写,这应该捕获 A、An 或 The 的所有版本。

You should use something more like

$node_field[0]['value'] = preg_replace(
 '/^(A|An|The) (.*)/i', 
 "$2, $1",
 $node->title
);

If I understand correctly, which should change any "A ...", "An ..." or "The ..." to "..., A", "..., An" and "..., The", respectively.

The i after the slash in the Regex pattern makes it case-insensitive, which should catch all versions of A, An, or The.

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