我需要通过我制作的脚本运行 600 个 XML 文件,该脚本提取特定的信息片段并以 JSON 格式保存每个文件。所有 600 个 XML 文件都在一个准备好通过 PHP 文件运行的文件夹中,我现在正在寻找一种快速的方法来完成它。
本质上,这是 PHP 文件经历的过程:
PHP 通过 URL 读取单个 XML 文件 -> 在本地将重要信息保存在变量中 -> 将重要信息保存到 JSON 文件中
有没有办法可以通过我的 PHP 文件以某种方式运行所有 600 个 XML 文件?
谢谢
打开包含 XML 文件的目录,然后处理它们,这里有一些最常用的方法。
<?php
$dir = "/etc/php5/";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>
您也可以使用glob()
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
在您选择的 foreach 循环中,您可以使用file_get_contents()或fread()然后您可以转换为 json。
<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
希望能帮助到你
继续尝试吧!您可能会遇到超时错误。如果这样做,请尝试配置最大超时设置。http://php.net/manual/en/function.set-time-limit.php
首先,编写一个获取 XML 文件名的函数,并在处理后以 php 数组或 JSON 的形式返回结果(基于您需要的代码)。
要编写此函数,您需要解析 XML ( http://php.net/manual/en/book.xml.php )。
在 PHP 中使用 JSON:http: //php.net/manual/en/book.json.php
然后,编写您的主要代码。您的主代码应枚举文件夹中的所有 XML 文件,然后为每个文件调用您的函数,并使用函数返回的信息收集/生成 JSON。
您可能需要readdir
收集文件夹中的所有 XML 文件。( http://php.net/manual/en/book.xml.php )
只要有很多 XML 文件,不要忘记增加时间限制,并且该过程可能需要很长时间,因此会发生超时错误。( http://php.net/manual/en/function.set-time-limit.php )
乔尔,
在我看来,您需要使用 readdir
http://php.net/manual/en/function.readdir.php
这将允许您获取要迭代的目录中的文件列表。
$dir = opendir('/path/to/files');
while($file = readdir($dir)) {
if ($file !== '.' && $file !== '..' && !is_dir($file)) {
$parthParts = pathinfo($file);
if ($pathParts['extension'] === 'xml') {
runscripton($file);
}
}
}
closedir($dir);