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

时间:2015-09-24 00:57:54

标签: php regex

如何检查字符串是否具有格式[group|any_title]并将标题返回给我?

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

我会以explode[group|作为分隔符并删除最后一个]。如果(爆炸的)长度> 0,然后字符串格式正确。

但我认为这不是一个好方法,不是吗?

2 个答案:

答案 0 :(得分:0)

使用PHP函数regular expression使用preg_match匹配。

您可以使用例如regexr.com来创建和测试正则表达式,完成后,然后在PHP脚本中实现它(用正则表达式替换preg_match的第一个参数) :

$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
}

特定的正则表达式模式取决于您想要检查输入字符串的严格程度。它可以是/^\[.+\|(.+)\]$//\|([A-Za-z ]+)\]$/之类的内容。首先检查字符串是否以[开头,以]结尾,并包含由|分隔的任何字符。第二个只是检查字符串是否以|结尾,后跟大写和小写字母字符和空格,最后是]

答案 1 :(得分:0)

所以你想检查字符串是否与正则表达式匹配?

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

如果group部分也应该是动态的:

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