GET_USERS META_QUERY:REGEXP不适用于匹配新行

时间:2016-06-13 作者:Curtis

我有一个元字段“my\\u meta\\u field”,其中可能包含以下示例用户的内容:

用户A

99999
559225
12519
用户B

5020492
99999
125191
用户C

194295
1199999
换行符是\\r\\n或\\n。这是在Mac for dev和Unix for server-side上,因此可能是。

如果目标编号为99999 然后我应该得到用户a和B的匹配。需要小心不要匹配像用户C这样的情况,其中数字的目标在“1199999”内

匹配行的开头,或\\n,或开头的\\r\\n应该解决这个问题。

$user = get_users( array(
    \'meta_query\' => array(
        array(
            \'key\' => \'my_meta_field\',
            \'value\' => \'(^|\\\\n|\\\\r\\\\n)99999\',
            \'compare\' => \'REGEXP\',
        ),
    ),
) );
不幸的是,这只与用户A正确匹配。它与用户B不匹配。此正则表达式在诸如https://regex101.com/.

我尝试过不同的格式,例如:(^|\\n|\\r\\n)99999

如果有人知道这里出了什么问题,请提前感谢。

1 个回复
最合适的回答,由SO网友:Curtis 整理而成

我发现了这个问题,还修复了regex中的一个bug。

最终代码:

\'meta_query\' => array( array( \'key\' => \'my_meta_field\', \'value\' => "(^|\\n|\\r\\n)99999($|\\n|\\r\\n)", \'compare\' => \'REGEXP\', ), ),

这里的问题是Wordpress在特殊字符上添加了额外的反斜杠。通过将表达式用双引号括起来,解决了这个问题。

还添加了字符串结尾/在目标值末尾捕获新行。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果