我目前正在编写一个脚本,搜索。md文件并从中提取字符串,但我遇到了关于将此字符串保存在数组中的问题。
下面是我使用的代码:$flags = FilesystemIterator::SKIP_DOTS;
$iterator = new RecursiveDirectoryIterator($userContent, $flags);
$iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $v) {
$checkFiles = strpos($v, ".md");
$url = array();
if (!$checkFiles == '') {
$mdFile = $v;
$mdContent = file_get_contents($mdFile);
$mdBreak = strpos($mdContent, "url: ");
$mdContent = substr($mdContent, $mdBreak + 5);
$mdBreak = strpos($mdContent, "n");
$mdUrl = substr($mdContent, 0, $mdBreak);
echo $mdUrl . ' => ' . $mdFile;
echo '<br>';
$url[$mdUrl] = $mdFile;
}
}
脚本成功找到。md文件,并成功找到这些文档中的url: custom-url
。
此外,echo $mdUrl . ' => ' . $mdFile;
返回custom-url => /content/default.md
,但显然将url保存为键和路径作为值不起作用,因为print_r($url)
返回Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )
有人能告诉我我做错了什么,也许帮助修复脚本?
编辑:显然,这是一个问题的变量,我试图设置值。
当我用$mdFile = (string)$v;
代替$mdFile = $v
时,它起作用了。
在每个循环中一次又一次地初始化$mdUrl
数组。我猜你想在foreach循环上面初始化它