我有一个字符串,其中包含逗号分隔的值列表.

例如: $sitelist = 'SC001rug,SC002nw,SC003nrge';

我使用preg_match判断该字符串中是否有网站,然后返回ID后面的字符.

$siteId='SC001';

if ( preg_match( "/$siteId(.+?),/", $sitelist, $matches ) ) {
    var_dump( $matches );
} else {
    echo "no match";
}

使用此功能,它会正确返回结果:

array(2) { [0]=> string(9) "SC001rug," [1]=> string(3) "rug" }

然而,如果$sitelist不包含尾部逗号,则匹配不会正确发生.

$sitelist = 'SC001rug'; 结果"不匹配"

如果我从preg_match命令中删除逗号,它只返回第一个字符.

if ( preg_match( "/$siteId(.+?)/", $sitelist, $matches ) ) {

结果:

array(2) { [0]=> string(6) "SC001r" [1]=> string(1) "r" }

如何正确调整preg_match,以便它在有和没有尾部逗号的情况下匹配.

谢谢

推荐答案

假设ID后面的字符是always个大写字母或大写字母,您可以使用:

preg_match( "/$siteId([a-zA-Z]+)/", $sitelist, $matches )

Php相关问答推荐

如何在WooCommerce HPOS订单列表中创建自定义过滤器?

如何优化-PHP 7.3.14+Laravel 6

Laravel 10 -扩展现有的artisan命令?

在WooCommerce中禁用特定日期之前的免费送货

如何用Ubuntu 22.04在VSCode中启用XDebug

如果所有请求都通过index.php路由,如何使用htaccess文件强制使用HTTPS?

如何在 Phpunit 的静态提供程序中创建测试双打?

使用动态地址和动态文件创建zip文件并获取zip文件链接

当所有对象都属于同一类型时,我可以省略 PHP in_array() 中的 strict 参数吗?

URL中包含"&"与DirectoryIterator不兼容

从图像URL中获取文件扩展名?

CodeIgniter 4中嵌套过滤器组不起作用

ACF 更新字段功能不更新 WordPress 中的任何数据

Xdebug 不会在断点处停止

仅允许减少 WooCommerce 中已完成订单的库存数量

PHP 中是否有 is_closure() 函数?

如何在不解压缩/重新压缩的情况下连接(连接)两个缩小的值

如何在 WooCommerce 中显示每个自定义选项卡的内容

从 CSV 文件 seeder 数据库时的额外行

将样式文件或脚本引入WordPress模板