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



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

kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]

我该怎么办,以便 PHP 在;之前获取字符串的一部分,然后在分隔符之前获取第一个单词,因此输出将是:

BI

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

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

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

使用示例

$re = '/(?P<sep>[a-zA-Z]*);/';
$str = 'kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]';
preg_match_all($re, $str, $matches);
// Print the entire match result
print_r($matches);

输出

Array
(
    [0] => Array
        (
            [0] => BI;
        )
    [sep] => Array
        (
            [0] => BI
        )
    [1] => Array
        (
            [0] => BI
        )
)

简化

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

只是为了完整,如果你不喜欢正则表达式:

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

只获取分隔符之前的第一个单词,使用preg_match函数就足够了:

$str = 'kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]';
preg_match("/bw+(?=;)/i", $str, $m);
print_r($m[0]);

输出:

BI

最新更新