PHP / REGEX:在括号内获取一个字符串

问题描述 投票:7回答:3

这是一个非常简单的问题,但是我在任何地方都找不到解决方案。

我尝试使用preg_match或preg_match_all从括号内获取字符串,但不带括号

到目前为止,我的表情看起来像这样:

\([A-Za-z0-9 ]+\)

并返回以下结果:

3(空心高光)928-129(

(空心高亮)(

我想要的是括号内的字符串,但没有括号。它看起来像这样:

空心高亮

之后我可能会用str_replace或其他内容替换括号,但这对我来说似乎不是一个非常优雅的解决方案。

我必须添加什么,因此结果中不包括括号?

感谢您的帮助,你们很棒! :)

php regex preg-match preg-match-all
3个回答
14
投票

除了转义的括号外,您只需添加捕获括号。

<?php
    $in = "hello (world), my name (is andrew) and my number is (845) 235-0184";
    preg_match_all('/\(([A-Za-z0-9 ]+?)\)/', $in, $out);
    print_r($out[1]);
?>

此输出:

Array ( [0] => world [1] => is andrew [2] => 845 ) 

23
投票

尝试:

preg_match('/\((.*?)\)/', $s, $a);

输出:

Array
(
    [0] => (hollow highlight)
    [1] => hollow highlight
)

0
投票

Piotr的答案就足够了,但是我需要使用[]稍有不同,并在之间提取值,因此,如果以后有人需要,请按此处,因为这是我现在需要的。

Priotr解决方案:

preg_match('/\((.*?)\)/', $s, $a);

但是,如果您需要从[]中提取值,例如:

$string = '[11:41-11:45]';

解决方案:

preg_match('/\[(.*?)\]/', $string, $a);

祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.