从PHP中包含方括号的字符串中提取文本


Extract text from a string that contains brackets in PHP

我有一个字符串,其状态名称和代码如下

KT16(Ottershaw)

现在我需要从()中提取文本。我需要提取奥特肖。我怎么能用php做到这一点。

应为:

preg_match('/'(([^')]*)')/', 'KT16(Ottershaw)', $matches);
echo $matches[1];

只需获取第一个左括号和最后一个右括号之间的子字符串:

$string = "KT16(Ottershaw)";
$strResult = substr($string, stripos($string, "(") +1,strrpos($string, ")") - stripos($string, "(")-1);  

这是一个示例代码,用于提取"["answers"]"之间的所有文本,并将其存储在两个单独的数组中(即一个数组中括号内的文本和另一个数组的括号外的文本)

function extract_text($string)
   {
    $text_outside=array();
    $text_inside=array();
    $t="";
    for($i=0;$i<strlen($string);$i++)
    {
        if($string[$i]=='[')
        {
            $text_outside[]=$t;
            $t="";
            $t1="";
            $i++;
            while($string[$i]!=']')
            {
                $t1.=$string[$i];
                $i++;
            }
            $text_inside[] = $t1;
        }
        else {
            if($string[$i]!=']')
            $t.=$string[$i];
            else {
                continue;
            }
        }
    }
    if($t!="")
    $text_outside[]=$t;
    var_dump($text_outside);
    echo "'n'n";
    var_dump($text_inside);
  }

输出:extract_text("你好吗?");将产生:

array(1) {
  [0]=>
  string(18) "hello how are you?"
}
array(0) {
}

extract_text("你好[http://www.google.com/test.mp3]你好吗?");将产生

array(2) {
  [0]=>
  string(6) "hello "
  [1]=>
  string(13) " how are you?"
}

array(1) {
  [0]=>
  string(30) "http://www.google.com/test.mp3"
}

以下RegEx应该有效:

/'[(.*?)']/