Macks
Macks

Reputation: 1776

PHP/REGEX: Get a string within parentheses

This is a really simple problem, but I couldn't find a solution anywhere.

I'm try to use preg_match or preg_match_all to obtain a string from within parentheses, but without the parentheses.

So far, my expression looks like this:

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

and returns the following result:

3(hollow highlight) 928-129 (<- original string)

(hollow highlight) (<- result)

What i want is the string within parentheses, but without the parentheses. It would look like this:

hollow highlight

I could probably replace the parentheses afterwards with str_replace or something, but that doesn't seem to be a very elegant solution to me.

What do I have to add, so the parentheses aren't included in the result?

Thanks for your help, you guys are great! :)

Upvotes: 8

Views: 31576

Answers (2)

Andrew Cheong
Andrew Cheong

Reputation: 30273

You just need to add capturing parenthesis, in addition to your escaped parenthesis.

<?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]);
?>

This outputs:

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

Upvotes: 18

Piotr Olaszewski
Piotr Olaszewski

Reputation: 6204

try:

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

output:

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

Upvotes: 26

Related Questions