PHP preg_match给出了错误的值

PHP preg_match给出了错误的值,php,csv,preg-match,explode,Php,Csv,Preg Match,Explode,我用php构建了一个csv文件,试图获取2013年、2014年、2015年的数据,并在以后构建它们 我使用了preg match,但这仍然给了我文件中所有的年份 代码如下所示: $sql = "SELECT * FROM `table 1`"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { $print2013 = ""; $print2014 = ""; $print

我用php构建了一个csv文件,试图获取2013年、2014年、2015年的数据,并在以后构建它们

我使用了preg match,但这仍然给了我文件中所有的年份

代码如下所示:

$sql = "SELECT * FROM `table 1`";
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result))
{

    $print2013 = "";
    $print2014 = "";
    $print2015 = "";

    $explode = explode("\r\n", $row['COL 19']);

    foreach ($explode as $key => $value19b)
    {
        if(preg_match('/2013/', $value19b))
        {
            $print2013 .= "\"$value19b\r\n\"";
        }

        if(preg_match('/2014/', $value19b))
        {
            $print2014 .= "\"$value19b\r\n\"";
        }

        if(preg_match('/2015/', $value19b))
        {
            $print2015 .= "\"$value19b\r\n\"";
        }

        echo $print2013;
        echo $print2014;
        echo $print2015;
    }
}
这应该会在数据库的变量$print2013中保存所有的2013,但我也会得到该变量的2014和2015(其他变量也是)

如果我回显得到的示例:

[COL 19] => 14.12.2014 sent mail
6.11.13: control
26.6.2015 blabla
...

有人知道为什么会发生这种情况。

什么是
$row['COL 19']
的内容?$row number代表csv的列我认为,$row number的数据是csv文件中数据所在的行,在这种情况下,$row['COL 19']的值类似于2013年去丘奇或2014年去学校等等,但是编辑您的问题并添加一些示例。您不需要使用
preg\u match
来搜索文本字符串,
strpos
也可以更快地完成同样的任务<代码>mysql函数现在已经过时,因为有几个php版本,您应该使用
mysqli
函数或PDO。关于您的方法,如果我是您,我将使用SQL查询来完成大部分工作。