I thought I found a solution here on stack that would work, but I might be going about it wrong:
$subject = 'RE: Reply to me [Quote #341 | some-site]';
preg_match("/[[^]]*]/", $subject, $matches);
var_dump($matches);
what I am trying to do is create an array where it comes out as:
[
    "Quote ...",
    "some-site",
]
Now this regex is suppose to get me the contents, I think, from the square brackets but all I get is:
array(1) {
  [0]=>
  string(29) "[Quote #341 | some-site]"
}
Which is wrong. I want the contents inside the square brackets, with out the |
Thoughts?
Advertisement
Answer
You can use
[s*([^][|]*?)s*|s*([^][]*?)s*]
See the regex demo.
Details:
[– a[chars*– zero or more whitespaces([^][|]*?)– Group 1: zero or more chars other than[,]and|(as few as possible)s*|s*– a|enclosed with zero or more whitespaces([^][]*?)– Group 1: zero or more chars other than[and](as few as possible)s*– zero or more whitespaces]– a]char
See the PHP demo:
$re = '/[s*([^][|]*?)s*|s*([^][]*?)s*]/m';
$str = 'RE: Reply to me [Quote #341 | some-site]';
if (preg_match($re, $str, $match)) {
    array_shift($match);
    print_r($match);
}
Output:
Array
(
    [0] => Quote #341
    [1] => some-site
)