检查字符串是否定义格式并获取其中的一部分

How can I check if a string has the format [group|any_title] and give me the title back?

[group|This is] -> This is
[group|just an] -> just an
[group|example] -> example

I would do that with explode and [group| as the delimiter and remove the last ]. If length (of explode) is > 0, then the string has the correct format.

But I think that is not quite a good way, isn't it?

So you want to check if a string matches a regex?

if(preg_match('/^\[group\|(.+)\]$/', $string, $m)) {
   $title = $m[1];
}

If the group part is supposed to be dynamic as well:

if(preg_match('/^\[(.+)\|(.+)\]$/', $string, $m)) {
   $group = $m[1];
   $title = $m[2];
}

Use regular expression matching using PHP function preg_match.

You can use for example regexr.com to create and test a regular expression and when you're done, then implement it in your PHP script (replace the first parameter of preg_match with your regular expression):

$text = '[group|This is]';
// replace "pattern" with regular expression pattern
if (preg_match('/pattern/', $text, $matches)) {
    // OK, you have parts of $text in $matches array
}
else {
    // $text doesn't contain text in expected format
}

Specific regular expression pattern depends on how strictly you want to check your input string. It can be for example something like /^\[.+\|(.+)\]$/ or /\|([A-Za-z ]+)\]$/. First checks if string starts with [, ends with ] and contains any characters delimited by | in between. Second one just checks if string ends with | followed by upper and lower case alphabetic characters and spaces and finally ].