我正在执行以下操作:
$text = 'L\' utente _{nickname} ti ha invitato a giocare';
$text_vars = preg_match('#\_{(.*?)\}#', $text, $matches);
返回:
Array
(
[0] => _{nickname}
[1] => nickname
)
如何使它只返回以下内容?
Array
(
[0] => nickname
)
我正在执行以下操作:
$text = 'L\' utente _{nickname} ti ha invitato a giocare';
$text_vars = preg_match('#\_{(.*?)\}#', $text, $matches);
返回:
Array
(
[0] => _{nickname}
[1] => nickname
)
如何使它只返回以下内容?
Array
(
[0] => nickname
)
从preg_match()
文档:
如果
matches
提供,则填充搜索结果。$matches[0]
将包含与完整模式匹配的$matches[1]
文本,将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。
对于所需的行为,请array_shift()
像这样使用:
$text = 'L\' utente _{nickname} ti ha invitato a giocare';
$text_vars = preg_match('#\_{(.*?)\}#', $text, $matches);
$temp = array_shift( $matches );
尝试这个
$text = 'L\' utente _{nickname} ti ha invitato a giocare';
$text_vars = preg_match('#\_{(.*?)\}#', $text, $matches) ? $matches[1] : '';
echo $text_vars;
您可以使用前瞻(?=..)
和后瞻(?<=..)
(或匹配重置\K
)
$text_vars = preg_match('~(?<=_{)[^}]++(?=})~', $text, $match);
或者
$text_vars = preg_match('~_{\K[^}]++(?=})~', $text, $match);