Php 用换行符爆弦的奇怪问题

Php 用换行符爆弦的奇怪问题,php,explode,Php,Explode,我不知道这段PHP代码有什么问题: $sql = "CREATE TABLE test ( id mediumint(9) unsigned NOT NULL auto_increment, filenames text NOT NULL, meta longtext, added_date datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id) )"; var_export(explode("\n",$sq

我不知道这段PHP代码有什么问题:

$sql = "CREATE TABLE test ( id mediumint(9) unsigned NOT NULL auto_increment, filenames text NOT NULL, meta longtext, added_date datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (id) )"; var_export(explode("\n",$sql)); 有些人则相反:

array ( 0 => 'CREATE TABLE test ( id mediumint(9) unsigned NOT NULL auto_increment, filenames text NOT NULL, meta longtext, added_date datetime NOT NULL default \'0000-00-00 00:00:00\', PRIMARY KEY (id) ) ;', ) 数组(0=>'CREATE TABLE test(id mediumint(9)无符号非空自动增量,文件名文本非空,元长文本,添加了_DATEDATETIME非空默认值'0000-00-00 00:00:00\',主键(id));',)
注意到区别了吗?第二个显示它,因为没有用于分解字符串的换行符。我不明白这里发生了什么。有人知道吗?

所有页面都是在同一台计算机上创建的吗?对于不同的操作系统,行尾字符代码是不同的。它可以是以下选项之一:
\n
\r
\r\n
,具体取决于系统是Windows、Mac还是*nix。您可能需要检查这三个页面。

是否所有页面都是在同一台计算机上创建的?对于不同的操作系统,行尾字符代码是不同的。它可以是以下选项之一:
\n
\r
\r\n
,具体取决于系统是Windows、Mac还是*nix。您可能需要检查这三种情况。

您需要灵活处理
换行
的外观。可以进行灵活的爆炸:

preg_split("/[\r\n]+/", $sql)
。。。或者,您可以将换行符标准化为您选择的格式:

$sql = strtr($sql, array(
    "\r\n" => "\n",
    "\r" => "\n",
));
explode("\n",$sql)
还值得注意的是,MySQL提供了几个
SHOW
语句,允许您从表定义中获取最有用的数据。通常不需要解析
SHOW CREATE TABLE
输出:


您需要灵活处理
换行
的外观。可以进行灵活的爆炸:

preg_split("/[\r\n]+/", $sql)
。。。或者,您可以将换行符标准化为您选择的格式:

$sql = strtr($sql, array(
    "\r\n" => "\n",
    "\r" => "\n",
));
explode("\n",$sql)
还值得注意的是,MySQL提供了几个
SHOW
语句,允许您从表定义中获取最有用的数据。通常不需要解析
SHOW CREATE TABLE
输出:


您的编辑器可能使用了
\r
而不是
\n
。如果这是在Windows系统上,它可能是回车符\r或者如果您在网页中查看结果,它可能是html
是的,我认为这是问题所在,但奇怪的是,有几个PHP像我希望的那样工作,而不是其他的,最奇怪的是测试文件都在同一个目录中。你的编辑器可能使用了
\r
而不是
\n
。如果这是在Windows系统上,可能是回车符,或者如果你在网页中查看结果,可能是html
是的,我认为这就是问题所在,但奇怪的是,有几个PHP像我希望的那样工作,而不是其他的,最奇怪的是测试文件都在同一个目录中。是的,它也在同一台计算机和同一个目录中。是的,它与\r一起工作得很好。我只知道它实际上取决于操作系统。非常感谢,为了解决这个问题,我将使用上面的阿尔瓦罗方法。是的,它也在同一台计算机和同一个目录中。是的,它与\r一起工作得很好。我只知道它实际上取决于操作系统。非常感谢,为了解决这个问题,我将使用上面的阿尔瓦罗方法。这是一个非常好的解决方案。非常感谢。你的解决方案真不错。非常感谢。