我有一个从sql studio生成的大型sql文件,该文件在其中创建数据库和表。我正在使用php的get_file_contents
并逐行查看该行是否包含CREATE DATABASE
来解析出数据库名称。问题是php在每个字符之前都添加了反斜杠,但我不确定如何停止。
USE [master]
GO
CREATE DATABASE [FOOBAR-DEV]
CONTAINMENT = NONE
GO
// and so on for another 10,000 lines
$db = "FOOBAR-DEV";
$path = sprintf('%s/../../sql/%s/createdb.sql', __DIR__, $db);
$contents = file_get_contents($path);
$lines = explode("\n", $contents);
$name = null;
foreach ($lines as $key => $line) {
$needle = 'CREATE DATABASE';
// debug code
if ($key <= 10) {
$output->writeln($line);
}
if (strpos($line, $needle) !== false) {
$output->writeln('found');
$name = substr($line, strlen($needle));
break;
}
}
$output->writeln($name);
我在stripslashes
上尝试过$line
,但这似乎无济于事。我不相信我有魔术引号。 php -i
中任何带有“魔术”的内容都只会显示Imagick设置。
如何删除$line
中的反斜杠?
答案 0 :(得分:0)
我不确定如何在php本身中解决问题,但是我能够在PhpStorm中将文件编码转换为utf-8,这似乎可以解决问题。