Я работаю над сайтом php и хотел бы вывести 15 случайных строк из файла html. До сих пор я только что получил 15 строк, но проблема в том, что я получаю код из файла html, а не 15 строк блока из текста.
Как я могу определить 2 переменные $ pathinfo и $ random, чтобы написать свой код таким образом, чтобы получить правильное решение?
Мой код:
<?php
$selected_file = $_POST['radio1'];
// get the filename of the file
$fileinfo = pathinfo($selected_file);
$filename = $fileinfo['dirname'] . DIRECTORY_SEPARATOR . $fileinfo['filename'];
$password = 'code';if (isset($_POST['submitradio']))
{
echo '<div class="imageselected">';
echo '<img src="'.$selected_file.'" /></br>'.PHP_EOL;
echo '</div>';
// check to see if a html file named the same also exists
if(file_exists("$filename.html"))
{
echo "<form action='test_result.php' method='post'>";
echo '<div class="Password">';
echo 'Type in password to view full Script';
echo "<label><div class=\"Input\"><input type='password' name='passIT' value='passit'/></div>";
echo "<input type='submit' name='submitPasswordIT' value='Submit Password'/></div>";
echo '</div>';
echo '</form>';
echo "$filename.html shares the same name as $selected_file";$splitTag = "[[mylinebreak]]";
$html = file_get_contents("$filename.html");
$newcontent = stri_replace("</div>", $splitTag, $html);
$newcontent = stri_replace("<br>", $splitTag, $newcontent);
$newcontent = stri_replace("</h1>", $splitTag, $newcontent);
$newcontent = stri_replace("</h2>", $splitTag, $newcontent);
$newcontent = stri_replace("</h3>", $splitTag, $newcontent);
$newcontent = stri_replace("</h4>", $splitTag, $newcontent);
$newcontent = stri_replace("</h5>", $splitTag, $newcontent);
$newcontent = stri_replace("</h6>", $splitTag, $newcontent);
/* and so on ... */
$newContent = strip_tags($newContent);
$lines = explode($splitTag);
for($x = 1;$x<=15;$x++) {
echo $lines [rand(0, count($lines)-1)]."<br>";
}
// end of forloop
}
// end of check
// start Sorrytext
else
{
echo '<div class="NoScript">';
echo "We apologize. No Script available for this movie.";
echo '</div>';
}
// end Sorrytext
}
// End of submitradio
if($_POST['submitPasswordIT']){
if ($_POST['passIT']== $password ){
echo "You entered correct password";
$dirs = glob("*", GLOB_ONLYDIR);
$pathinfo = ($dirs.'/'.$lines.'/html');
include($pathinfo);
}
else{
echo "You entered wrong password";
}
}
?>
Помощь будет очень ценится 🙂
Привет.
Я попробовал ваше решение, но оно не сработало. Я ничего от этого не получаю. Не могли бы вы придумать другое решение? Могу ли я не просто определить переменную $ random, и если да, то как мне это сделать?
Удаление всех тегов HTML с strip_tags
одного будет недостаточно, потому что я полагаю, что со строками вы подразумеваете не строки в источнике HTML, а строки текста, отображаемые в браузере. Поскольку браузер переносит текст в новую строку, когда не хватает горизонтального пространства, это будет сложной задачей. Но есть некоторые html-элементы, в которых мы точно знаем, что строка прервется, то есть все блок-элементы (div, p, h1, …) и br
тег.
Как насчет следующей идеи:
br
тег с помощью специального тега (например, [[mylinebreak]]
)strip_tags
Пример:
$splitTag = "[[mylinebreak]]";
$html = file_get_contents("$filename.html");
$newcontent = stri_replace("</div>", $splitTag, $html);
$newcontent = stri_replace("<br>", $splitTag, $newcontent);
$newcontent = stri_replace("</h1>", $splitTag, $newcontent);
$newcontent = stri_replace("</h2>", $splitTag, $newcontent);
$newcontent = stri_replace("</h3>", $splitTag, $newcontent);
$newcontent = stri_replace("</h4>", $splitTag, $newcontent);
$newcontent = stri_replace("</h5>", $splitTag, $newcontent);
$newcontent = stri_replace("</h6>", $splitTag, $newcontent);
/* and so on ... */
$newContent = strip_tags($newContent);
$lines = explode($splitTag);
/* do whatever you want with the $lines array */
Других решений пока нет …