所以基本上我有一个这样的字符串:
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