gpt4 book ai didi

javascript - 尝试使用 preg_match_all 使用 php 动态创建菜单到我的服务器 php 文档

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:53 25 4
gpt4 key购买 nike

该元素包含一个横向菜单,其中包含我所有的博客条目。理论上,菜单是这样工作的:我得到 <h1>我的每个博客文档的标题及其对应的 href ,使用 PHP。


所以每次我添加一个新的博客条目时,它都会自动出现在菜单中,我使用 fopenfread 并将我博客的每个 php 文档的内容保存在一个名为 $leer 的变量中。


然后,我使用 Preg_match_all 搜索每个博客条目的标题并将其显示在菜单上。有了这个,我可以制作菜单而无需手动添加链接,也可以使用 scandir 获取 url。


问题是,当在数组中使用 preg_match_all 时,会给我很多不正确的结果,得到相同的 <h1>标题四次,没有解释。这是代码:

$escanear = scandir ("/home/sites/thetoptenweb.com/public_html/post");
$tamanoArray = count($escanear);

首先,如您所见,我使用 scandircount 来获取页数。

for($i=2;$i<=$tamanoArray-3;$i++){
$abrirFichero = fopen($escanear[$i],"r");
$leer=fread($abrirFichero, filesize($escanear[$i]));
fclose($abrirFichero);
}

然后,我使用for 循环fread 来阅读我所有的文档。该循环仅“扫描”第二个和最后三个之间的选定文件,因为这些是我的博客条目。

preg_match_all('%<h1>(.*)</h1>%', $leer, $arrayMaches);

因此,使用 preg_match_all函数我在一个多维数组中获取我的文档的标题,那个数组给我带来了问题我认为,因为我试图用 foreach 读取每个结果循环,但有一些空白结果,我不知道为什么会这样。

foreach ($arrayMaches as $result) {
foreach ($result as $key) {
}
}

$cortado=preg_split('%</?h1>%', $key);

echo "<a href=".'"'.$escanear[$i].'"'."><li>".$cortado[0]."</li></a><hr>";

最后,我使用foreach 循环 访问preg_match_all多维数组。然后,我preg_split结果得到没有html标签的文本,然后用echo显示结果。

希望有人帮助我识别问题,如果可能的话,请解释 preg_match_all 数组,因为我不明白它是如何创建的。采纳了建议。如果你知道更好的方法来做到这一点,我会很乐意阅读它。这是完整的代码:

<?php
$escanear = scandir ("/home/sites/thetoptenweb.com/public_html/post");
$tamanoArray = count($escanear);
for($i=2;$i<=$tamanoArray-3;$i++){
$abrirFichero = fopen($escanear[$i],"r");
$leer=fread($abrirFichero, filesize($escanear[$i]));
fclose($abrirFichero);
preg_match_all('%<h1>(.*)</h1>%', $leer, $arrayMaches);
foreach ($arrayMaches as $result) {
foreach ($result as $key) {
}
}
$cortado=preg_split('%</?h1>%', $key);
echo "<a href=".'"'.$escanear[$i].'"'."><li>".$cortado[0]."</li></a><hr>";
}
?>

谢谢。

最佳答案

只需使用 DOM...您就会省去一些麻烦。

$menuData = array();
$iter = new DirectoryIterator('/home/sites/thetoptenweb.com/public_html/post');

foreach ($iter as $file) {
if ($file->isFile()) {
$filename = $file->getFilename();
$path = $file->getPathname();
$dom = new DOMDocument();
$dom->loadHtmlFile($path);

$titleNode = $dom->getElementsByTagname('h1')->item(0);
if ($titleNode) {
$title = $titleNode->nodeValue;
$menuData[$filename] = $title;
}
}
}

现在您拥有了 $menuData 中的所有内容,您可以遍历它并输出链接,假设文件名是适当的 URL。或者,您可以直接输出循环中的链接,但将内容分开会更明智。创建一个函数来获取您需要的数据,然后使用该数据进行输出。

但更好的解决方案是选择一个博客平台并使用它,然后花时间编写一个导入程序并调整外观以适应。

关于javascript - 尝试使用 preg_match_all 使用 php 动态创建菜单到我的服务器 php 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com