读取目录的内容,使用HTML标记title php随机输出结果(正常工作,但不是标题)

读取目录的内容,使用HTML标记title php随机输出结果(正常工作,但不是标题),php,html,dom,random,tags,Php,Html,Dom,Random,Tags,到目前为止,我的脚本运行良好,基本上它获取所有htm文件,输出结果,但是我使用DOM从每个文件获取HTML标题标记,这是我无法在随机数组中获取它的地方。。(图像基本名称和htm基本名称文件相同(firstresult.htm有picture firstresult.jpg) 我希望我提供的代码和答案将是有用的 <?php // loop through the images $count = 0; $filenamenoext = array(); foreach (glob("/myd

到目前为止,我的脚本运行良好,基本上它获取所有htm文件,输出结果,但是我使用DOM从每个文件获取HTML标题标记,这是我无法在随机数组中获取它的地方。。(图像基本名称和htm基本名称文件相同(firstresult.htm有picture firstresult.jpg)

我希望我提供的代码和答案将是有用的

<?php
// loop through the images
$count = 0;
$filenamenoext = array();

foreach (glob("/mydirectory/*.htm") as $filename) {
$filenamenoext[$count] = basename($filename, ".htm");


$count++;
}
for ($i = 0; $i < 10; $i++) {
$random = mt_rand(1, $count - 1);


$cachefile = "$filename";
$contents = file($cachefile); 
$string = implode($contents);
$doc = new DOMDocument();
@$doc->loadHTML($string);
$nodes = $doc->getElementsByTagName('title');
//get and display what you need:
$title = $nodes->item(0)->nodeValue;


 echo '<a href="'.$filenamenoext[$random].'.htm"><img class="image" src="'.$filenamenoext[$random].'.jpg" " />"'.$title.'"</A><BR><BR>';

 }

?>

看起来您在
$cachefile=“$filename”
行中使用的
$filename
变量尚未设置。它仅在foreach循环的作用域中定义

你应该把它改成

$cachefile = $filenamenoext[$random] . '.htm';

另外,使用and函数是一种更好的做法,而不是使用计数器和手动填充数组



是否显示任何错误?可能它没有创建
DOMDocument
。请从
@$doc->loadHTML($string);
行中删除
@
,然后再次运行,如果看到错误消息,请编辑您的帖子。谢谢,它不会显示错误,只是与“/>”.$title”有关这是您的完整php代码吗?感谢您工作顺利,尽管我不得不将$cachefile更改为,因为我们在顶部剥离了ext.$cachefile=“$filenamenoext[$random].htm”;我已经编辑了答案,请投票并/或接受它(如果有帮助)。谢谢!
<?php
// loop through the images
$count         = 0;
$filenamenoext = array();

foreach (glob("/mydirectory/*.htm") as $filename) {
    array_push($filenamenoext, basename($filename, ".htm"));
}
for ($i = 0; $i < 10; $i++) {
    $random = mt_rand(1, count($filenamenoext) - 1);


    $cachefile = $filenamenoext[$random] . '.htm';
    $contents  = file($cachefile);
    $string    = implode($contents);
    $doc       = new DOMDocument();
    @$doc->loadHTML($string);
    $nodes = $doc->getElementsByTagName('title');
    //get and display what you need:
    $title = $nodes->item(0)->nodeValue;


    echo '<a href="' . $filenamenoext[$random] . '.htm"><img class="image" src="' . $filenamenoext[$random] . '.jpg" " />"' . $title . '"</A><BR><BR>';

}

?>