所以基本上我有一个这样的字符串:
kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]
我该怎么做才能让PHP在;
之前获取字符串的一部分,然后获取分隔符之前的第一个单词,以便输出为:
BI
到目前为止,我有:strtok($g, ';');
,但只能在分隔符之前获取字符串的前半部分,而不是分隔符之前的第一个字。
答案 0 :(得分:3)
此正则表达式模式匹配上部和下部字母(没有空格),后跟分号。我还为捕获添加了一个命名组。
(?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
}
答案 1 :(得分:2)
只是要完整,如果你不喜欢正则表达式:
$value = end(explode(" ", array_shift(explode(";", "kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]"))));
print_r($value); // prints BI
答案 2 :(得分:1)
要仅分隔符之前的第一个单词,它足以使用preg_match
函数:
$str = 'kbIr cugY icqwrY BI; cugY cuig cuig icqwry ]';
preg_match("/\b\w+(?=;)/i", $str, $m);
print_r($m[0]);
输出:
BI