0

という名前のフィールドにデータの文字列がありcontent、1 つのレコードは次のようになります。

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

私がやろうとしているのは、角括弧内のすべてのテキストを取得することです。PHP配列に入れることができるように。これはmySqlでも可能ですか?

次の投稿を見ました: MYSQL を介して文字列内の括弧の間でデータを抽出しようとしていますが、括弧の間から 1 つの値のみを抽出しようとしています。それらの数は不明です。その投稿を読んだ後、私は次のようなことをしました。

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

これは私を次のように捉えます:

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

PHPを使用して残りのテキストを取り除き、文字列を配列に分解できますが、次のようなものを取得できるmySqlを使用するだけでこれを行うより良い方法はありますか:

[attr1][attr2][attr3]

私はおそらく正規表現を考えていましたが、それはtrueまたはfalseを返すだけで、あまり役に立ちません。

4

1 に答える 1

0

さらに調査した結果、mySqlでそれが可能かどうかはわかりません。アプリのどこで使用しているかによっては、文字列または配列形式の結果が必要になる場合があります。

そこで、データベースからデータを取得した後にリストを返す新しいメソッドを作成しました(この投稿の助けを借りて:PHP:角かっこで囲まれたテキストのキャプチャ):

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

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

    return ($array===false) ? implode(', ',$params) : $params;
}
于 2012-10-25T14:33:25.883 に答える