Вопрос:

PHP / REGEX: получить строку в скобках

php regex preg-match preg-match-all

25640 просмотра

2 ответа

785 Репутация автора

Это действительно простая проблема, но я нигде не мог найти решение.

Я пытаюсь использовать preg_match или preg_match_all, чтобы получить строку из скобок, но без скобок .

Пока что мое выражение выглядит так:

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

и возвращает следующий результат:

3 (пустая подсветка) 928-129 (<- исходная строка)

(пустая подсветка) (<- результат)

То, что я хочу, это строка в скобках, но без скобок. Это будет выглядеть так:

полая изюминка

Я мог бы потом заменить скобки на str_replace или что-то в этом роде, но для меня это не очень элегантное решение.

Что мне нужно добавить, чтобы круглые скобки не были включены в результат?

Спасибо за вашу помощь, ребята, вы молодцы! :)

Автор: Macks Источник Размещён: 28.06.2012 04:56

Ответы (2)


22 плюса

4619 Репутация автора

пытаться:

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

выход:

Array
(
    [0] => (hollow highlight)
    [1] => hollow highlight
)
Автор: Piotr Olaszewski Размещён: 28.06.2012 04:59

13 плюса

20545 Репутация автора

Решение

Вам просто нужно добавить захватывающую скобку, в дополнение к вашей экранированной скобке.

<?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 ) 
Автор: Andrew Cheong Размещён: 28.06.2012 05:44
Вопросы из категории :
32x32