$variable = 'of course it is unnecessary [http://google.com], but it is simple["very simple"], and this simple question clearly needs a simple, understandable answer [(where is it?)] in plain English'
Значение переменной меняется каждый раз.
Я пытаюсь получить текст из [...]
. Итак, если есть [(google)]
, совпадение должно быть (google)
.
Я ищу решение, которое может выполнять каждое из этих действий:
$all
$first
$last
Пробовал для этого регулярное выражение, например /[\(.*?\)]/
, но результаты не то, что можно было бы ожидать.
Это должно сделать это:
$variable = 'of course it is unnecessary [http://google.com], but it is simple["very simple"], and this simple question clearly needs a simple, understandable answer [(where is it?)] in plain English'; preg_match_all("/(\[(.*?)\])/", $variable, $matches); $first = reset($matches[2]); $last = end($matches[2]); $all = $matches[2]; # To remove all matches foreach($matches[1] as $key => $value) { $variable = str_replace($value, '', $variable); } # To remove first match $variable = str_replace($first, '', $variable); # To remove last match $variable = str_replace($last, '', $variable);
Обратите внимание: если вы используете str_replace для замены тегов, все подобные вхождения тегов будут удалены, если они существуют, а не только первые.