Reputation: 43677
$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'
Value of this variable everytime changes.
What I trying to do is to get the text from [...]
. So, if there is [(google)]
, the match should be (google)
.
I'm searching for a solution, which can do each of these actions:
$all
$first
$last
Tried different regex for this, like /[\(.*?\)]/
, but the results aren't what one might expect.
Upvotes: 1
Views: 72
Reputation: 124878
This should do it:
$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);
Note that if you use str_replace to replace the tags, all similar occurences of the tags will be removed if such exist, not just the first.
Upvotes: 2