如何在字符之间从数据库中获取多个字符串

时间:2014-01-26 12:05:39

标签: php mysql string preg-match

因此,我有多个列格式为 {a|b|c}{e|f|g}{h|i|j}[d]

a,e,h,d是数字(例如:2,3,4.5等)

b,f,我是日期(ex 1.1.2014 - 是的,有点)

c,g,j是随机格式化的ID,包含数字和字母

该列如下所示:

{5|1.1.2014|a23yiuahd3}{5.25|2.1.2014|a23yiuahd3}{9.25|2.1.2014|a23yiuahd3}[7]

我把头分开了2天,想出如何在php中输出它们:

5 5.25 9.25 将鼠标悬停在每个号码上会显示日期和用户(ID)。

我尝试使用 preg_match ,但它只会在同一个数组中输出第一个{...}或全部。所以没有好处。

我尝试在很多其他子串中拆分多个子串:

$i={5|1.1.2014|a23yiuahd3

$i_rest={5.25|2.1.2014|a23yiuahd3}{9.25|2.1.2014|a23yiuahd3}[7]

$i2={5.25|2.1.2014|a23yiuahd3

$i2_rest={9.25|2.1.2014|a23yiuahd3}[7] ,

但是我收到了很多colums,我重载数据库。

一个请求中,我等待大约7秒钟。

欢迎任何想法。

1 个答案:

答案 0 :(得分:2)

首先,拆分你的字符串。

$s = "{5|1.1.2014|a23yiuahd3}{5.25|2.1.2014|a23yiuahd3}{9.25|2.1.2014|a23yiuahd3}[7]";
preg_match_all('/{([\d.]+)\|([\d.]+)\|([\da-z]+)}/', $s, $match);

print_r($match);

输出

Array
(
    [0] => Array
        (
            [0] => {5|1.1.2014|a23yiuahd3}
            [1] => {5.25|2.1.2014|a23yiuahd3}
            [2] => {9.25|2.1.2014|a23yiuahd3}
        )

    [1] => Array
        (
            [0] => 5
            [1] => 5.25
            [2] => 9.25
        )

    [2] => Array
        (
            [0] => 1.1.2014
            [1] => 2.1.2014
            [2] => 2.1.2014
        )

    [3] => Array
        (
            [0] => a23yiuahd3
            [1] => a23yiuahd3
            [2] => a23yiuahd3
        )

)

现在,您可以从数组$match中提取数据并自行输出。