如何在PHP中获取分隔符前的第一个单词

如何在PHP中获取分隔符前的第一个单词,php,Php,所以基本上我有这样一个字符串: kbIr cugY icqwrY BI; cugY cuig cuig icqwry ] 我该怎么做才能让PHP在之前成为字符串的一部分然后获取分隔符前的第一个单词,因此输出为: BI 到目前为止,我有:strtok($g,,;),但它只获取分隔符前字符串的前半部分,而不是分隔符前的第一个单词。此正则表达式模式匹配大小写字母(无空格),后跟分号。我还为捕获添加了一个命名组 (?P<sep>[a-zA-Z]*); 简化 if (isset($mat

所以基本上我有这样一个字符串:

kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]
我该怎么做才能让PHP在
之前成为字符串的一部分
然后获取分隔符前的第一个单词,因此输出为:

BI

到目前为止,我有:
strtok($g,,;),但它只获取分隔符前字符串的前半部分,而不是分隔符前的第一个单词。

此正则表达式模式匹配大小写字母(无空格),后跟分号。我还为捕获添加了一个命名组

(?P<sep>[a-zA-Z]*);
简化

if (isset($matches['sep']) and len($matches['sep']) > 0) {
    echo $matches['sep'][0]; // BI
}

此正则表达式模式匹配大小写字母(不带空格),后跟分号。我还为捕获添加了一个命名组

(?P<sep>[a-zA-Z]*);
简化

if (isset($matches['sep']) and len($matches['sep']) > 0) {
    echo $matches['sep'][0]; // BI
}
要仅获取分隔符前的第一个单词,只需使用
preg\u match
函数即可:

$str = 'kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]';
preg_match("/\b\w+(?=;)/i", $str, $m);

print_r($m[0]);
输出:

BI
要仅获取分隔符前的第一个单词,只需使用
preg\u match
函数即可:

$str = 'kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]';
preg_match("/\b\w+(?=;)/i", $str, $m);

print_r($m[0]);
输出:

BI

为了完整起见,如果您不喜欢正则表达式:

$value = end(explode(" ", array_shift(explode(";", "kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]"))));

print_r($value); // prints BI

为了完整起见,如果您不喜欢正则表达式:

$value = end(explode(" ", array_shift(explode(";", "kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]"))));

print_r($value); // prints BI