我需要通过我制作的脚本运行600个XML文件,该脚本提取特定的信息并以JSON格式保存每个信息。所有600个XML文件都在一个准备好通过PHP文件运行的文件夹中,我现在正在寻找一种快速的方法来实现它。
基本上这是PHP文件经历的过程:
PHP通过URL读取单个XML文件 - >在本地保存变量中的重要信息 - >将重要信息保存到JSON文件
有没有办法可以通过我的PHP文件以某种方式运行所有600个XML文件?
由于
答案 0 :(得分:1)
打开包含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);
?>
希望有所帮助
答案 1 :(得分:0)
请继续尝试!您可能会遇到超时错误。如果这样做,请尝试配置最大超时设置。 http://php.net/manual/en/function.set-time-limit.php
答案 2 :(得分:0)
乔尔,
听起来像你需要的是使用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);
答案 3 :(得分:0)
首先,编写一个获取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)