我正在编写一个搜索.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
,但显然会将网址保存为关键字,并且路径值无效,因为print_r($url)
会返回Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )
有人能告诉我我做错了什么并且可能有助于修复脚本吗?
编辑:显然这是我试图将其设置为值的变量的问题。
我一旦用$mdFile = $v
替换$mdFile = (string)$v;
就行了。
答案 0 :(得分:0)
您正在每个循环上反复初始化$mdUrl
数组。我想你想在foreach循环之上初始化它。