mySql在方括号之间检索数据

时间:2012-10-25 14:01:55

标签: php mysql regex

我在名为content的字段中有数据字符串,一条记录可能类似于:

loads of text ... [attr1] some text [attr2] more text [attr3] more text etc...

我要做的是将所有文字放在方括号内;这样我就可以将它放入PHP数组中。这甚至可以用mySql吗?

我见过以下帖子:Looking to extract data between parentheses in a string via MYSQL,但是他们只想从括号中提取一个值,我的数量不明。读完那篇文章后,我做了类似下面的事情;

SELECT substr(content,instr(content,"["), instr(content,"]")) as attrList from myTable

哪会抓住我以下内容:

[attr1] some text [attr2] some more text [attr3]

我可以使用PHP来删除剩下的文本,然后将字符串分解为数组,但是有一个更好的方法来使用mySql来执行此操作,我可以检索以下内容:

[attr1][attr2][attr3]

我在考虑也许是正则表达式,但我看到它只返回一个错误的真实,这对我没什么帮助。

1 个答案:

答案 0 :(得分:0)

经过更多的研究,我不确定它是否可能在mySql中,我可能需要字符串或数组形式的结果,具体取决于我在我的应用程序中使用它们的位置。

所以我在从数据库中获取数据之后创建了一个返回列表的新方法(在这篇帖子的帮助下:PHP: Capturing text between square brackets):

public function attrList($array=false)
{
    preg_match_all("/\[.*?\]/",$this->content,$matches);

    $params = str_replace(array('[',']'),'',$matches[0]);

    return ($array===false) ? implode(', ',$params) : $params;
}