【问题标题】:echo 15 random lines of html files回显 15 行随机的 html 文件
【发布时间】:2015-01-15 10:03:12
【问题描述】:

我必须为大学做一个 php 作业。

如果同一文件夹中有电影脚本文本和相同的图像,我将如何回显 html 文件的 15 行随机行?

到目前为止我所尝试的:

$folder = 'Filmnoir/';
$hitchcock ='Hitchcock/';
$shakespear ='Shakespear/';
$filetype = '*.*';
$files = glob($folder.$filetype);
$file2 = glob ($hitchcock.$filetype);
$file3 = glob ($shakespear.$filetype);
$count = count($files);
$count1 = count($file2);
$count2 = count($file3);
$scripttype ='*.html';
$Scripts = glob($ScriptFilmNoir.$scripttype);
$Scripts=file_get_contents("DoubleIndemnity.html");

if($_POST['radio1']=="0"){
if(($i %1)==0){
for ($i = 0; $i < $count; $i++)
{

    echo '<div class="image2">';
    echo '<img src="'.$files[$i].'" />';
    echo '</div>';
    if (condition) {
    include 'DoubleIndemnity.html'; }
    echo '</td></tr>';
}

echo '<div class="Passwordtext">';
echo 'Type in password to view full Script';
echo '</div>';
echo "<label><div class=\"password\"><input type='password' name='code' value='code'/></div></label>";
echo "<form method='POST' action='ca1_result.php'>";
echo "<div class=\"SubmitIt\"><input type='submit' name='submitScript' value='Submit Password'/></div>";
echo '</form>';
}
}
if($_POST['radio1']=="1"){
echo '<div class="Sorrytext">';
echo 'We apologize. No script available for this movie.';
echo '</div>';
}
if($_POST['radio1']=="2"){
echo '<div class="Sorrytext">';
echo 'We apologize. No script available for this movie.';
echo '</div>';
}

我想在同一个文件夹中有图像(例如DoubleIndemnity.png)和电影脚本(例如DoubleIndemnity.html)时实现这一点,我会得到 15 行随机的电影脚本文本和图像。我可以使用glob 函数吗?如果可以,我将如何实现?

我能问点别的吗?当我提交密码时,我如何获得完整的电影剧本?

我试过了:

foreach($files as $file2) {
if($_POST['submitPassword']){
if($file2 === '.' OR $file2 === '..' OR $file2 === 'thumbs.db' OR !is_dir($folder.'/'.$file2)) {continue;}
    if(file_exists($folder.'/'.$file2.'/doubleindemnity.gif') AND file_exists($folder.'/'.$file2.'/DOUBLEINDEMNITY.htm')) {
        echo '<div class="Container">';
        echo "<div class='image2'><img src='$folder/$file/doubleindemnity.gif'>";
        $lines4 = file($folder.'/'.$file2.'/DOUBLEINDEMNITY.htm');
         $count = count($lines4);
        for($a = 0;$a < $count;$a++) {
        echo substr($lines4[$a],strlen($folder),strpos($lines4[$a], '.')-strlen($folder));
        }
        echo "</div>";
    }
      echo "</div>";
}
}
?>

使用该代码,我只需从 html 文件中获取几行代码。我不想要那个。我要全文。以及如何使用字符串替换功能摆脱代码,只接收段落中的文本?

干杯:)

【问题讨论】:

  • 一定要用glob函数吗?您使用它有什么特别的原因吗?

标签: php


【解决方案1】:

这段代码将循环遍历预定义文件夹中的文件夹(例如:/movies)。它会查看里面是否是一个文件夹,以及该文件夹是否有 2 个文件:image.png 和lines.html。如果它有这两个文件,它将首先放置图像,然后读取 HTML 文件,并从该文件中随机写下 15 行。

<?php
$folder = "movies";
$files = scandir($folder);
foreach($files as $file) {
    if($file === '.' OR $file === '..' OR $file === 'thumbs.db' OR !is_dir($folder.'/'.$file)) {continue;}
    if(file_exists($folder.'/'.$file.'/image.png') AND file_exists($folder.'/'.$file.'/lines.html')) {
        echo "<div class='image2'><img src='$folder/$file/image.png'>";
        $lines = file($folder.'/'.$file.'/lines.html');
        for($x = 1;$x<=15;$x++) {
            echo $lines[rand(0, count($lines)-1)]."<br>";
        }
        echo "</div>";
    }
}

【讨论】:

  • @UserSC 如果这是您正在寻找的答案,请将其标记为已接受的答案,这样它就不会一直处于“未解决”状态;)
【解决方案2】:

遍历$directory 中的文件,然后将 15 行随机输出到 html 变量中,如果图像存在,则将其添加到图像 html 变量中。如果它们都被添加,则返回结果。 (未经测试,但应该可以)

<?php
//I dont know where you have got some of these variables from
$directory = "Filmnoir";
$ScriptFilmNoir = "DoubleIndemnity";
$scripttype ='html';
$supportedImages = Array("png", "jpg", "jpeg");
$html = "";
$imagehtml = "";
$allFiles = scandir($folder);
$imageFound = 0;
$htmlFound = 0;

foreach($files as $file) {
    if($file === '.' || $file === '..' || $file === 'thumbs.db' || is_dir($file)) {
        continue;
    }
    $nameWithoutExtension = substr($file, 0 , (strrpos($file, ".")));
    $fileExtension = $id = substr($file, strrpos($file, '.') + 1);
    if($nameWithoutExtension == $ScriptFilmNoir){
        if($fileExtension == $scripttype){
            $htmlFound = 1;
            $lines = file($directory . "/" . $ScriptFilmNoir . "." . $scripttype);//file in to an array         
            $range = range(1, count($lines));
            $range = array_flip($range);
            $range = array_rand($range, 15);

            foreach($range as $line){
                $html .= $lines[$value] . PHP_EOL;
            }
        }elseif(in_array ( $fileExtension , $supportedImages)){
            $imageFound = 1;
            $imagehtml = "<img src='{$directory}/{$ScriptFilmNoir}.{$fileExtension}' /><br />";
        }
    }
}
if($imageFound == 1 && $htmlFound == 1){
    echo $imagehtml . $html;
}

【讨论】:

    【解决方案3】:

    我认为欧文正在寻找的是 15 行而不是 15 行的随机提取。

    使用@ThijmenDF 的示例,只需更改

    for($x = 1;$x<=15;$x++) {
        echo $lines[rand(0, count($lines)-1)]."<br>";
    }
    

    $random = rand(0, count($lines)-1);
    for($x = 1;$x<=15;$x++) {
        echo $lines[$random + $x]."<br/>";
    }
    

    【讨论】:

    • 为我认识的陌生人干杯:)但这无济于事。一直来一样。无论如何,我现在编辑我的整个代码。结束时会很高兴。谢谢:)
    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2014-06-28
    相关资源
    最近更新 更多