7

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

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

到目前为止,我的表情是这样的:

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

并返回以下结果:

3(空心突出显示)928-129(<-原始字符串)

(空心突出显示)(<- 结果)

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

镂空高光

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

我必须添加什么,所以括号不包含在结果中?

谢谢你们的帮助,你们太棒了!:)

4

2 回答 2

24

尝试:

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

输出:

Array
(
    [0] => (hollow highlight)
    [1] => hollow highlight
)
于 2012-06-28T16:59:38.083 回答
16

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

<?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 ) 
于 2012-06-28T17:44:18.820 回答