Php 读对问答;A';档案里有什么?
我希望创建一个简单的文本文件,其中包含问题和单个答案。基本布局思想是:Php 读对问答;A';档案里有什么?,php,text,file-io,Php,Text,File Io,我希望创建一个简单的文本文件,其中包含问题和单个答案。基本布局思想是: [Q] Question 1 [A] Answer 1 [-] [Q] Question 2 [A] Answer 2 [-] 每个答案后都有一个分隔符[-],表示Q/a组合已完成。答案可以跨越多行和/或包含一些基本HTML 例如: 什么是PHP? [A] PHP是为web开发设计的服务器端脚本语言,但也用作通用编程语言 PHP现在安装在超过2.44亿个网站上 和210万台web服务器。最初创建 Rasmus Lerdor
[Q] Question 1
[A] Answer 1
[-]
[Q] Question 2
[A] Answer 2
[-]
每个答案后都有一个分隔符[-],表示Q/a组合已完成。答案可以跨越多行和/或包含一些基本HTML
例如:
什么是PHP?
[A] PHP是为web开发设计的服务器端脚本语言,但也用作通用编程语言
PHP现在安装在超过2.44亿个网站上
和210万台web服务器。最初创建 Rasmus Lerdorf在1995年提出的PHP的参考实现现在是 由PHP小组制作 [-] [Q] 问题2 [A] 答复2 [-] 文本文件将手动写入并存储在本地服务器上。因此,如果需要,可以更改布局。但我确实希望能够在格式化中使用一些HTML 我想尝试的是将这个文件读入一个php页面,循环遍历每个Q/a对,并在屏幕上显示它们 问题和答案的输出类似于:
<a href="#" class="question">QUESTION</a>
<div class="answer">
<strong>[Q] QUESTION</strong><br/>
[A]ANSWER
</div>
[Q]问题
[A] 答复
有没有人能给我指出正确的方向,让我读懂这些对,然后输出它们
谢谢:)
注:Q1的示例答案取自维基百科;)
更新:
到目前为止,我得到的是:
问题:
[Q] Question 1
[A] Answer 1
[-]
[Q] Question 2
[A] Answer 2
[-]
[Q] Question 3
[A] Answer 3
[-]
[Q] Question 4
[A] <b>PHP</b> is a server-side scripting language designed for web development but also used as a general-purpose programming language.<br/>PHP is now installed on more than 244 million websites and 2.1 million web servers.<a href='#'>[2]</a><br/>Originally created by Rasmus Lerdorf in 1995, the reference implementation of PHP is now produced by The PHP Group
[-]
[Q] Question 5
[A] Answer 5
[-]
[Q] Question 6
[A] Answer 6
[-]
[Q]问题1
[A] 答复1
[-]
[Q] 问题2
[A] 答复2
[-]
[Q] 问题3
[A] 答复3
[-]
[Q] 问题4
[A] PHP是一种服务器端脚本语言,设计用于web开发,但也用作通用编程语言。
PHP现在安装在超过2.44亿个网站和210万个web服务器上。
PHP的参考实现最初由Rasmus Lerdorf于1995年创建,现在由PHP组制作
[-]
[Q] 问题5
[A] 答复5
[-]
[Q] 问题6
[A] 答复6
[-]
脚本:
<?php
$handle = fopen("questions.txt","r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
if (substr($line,0,3)==="[Q]") {
echo "<a href='#' class='question'>$line</a>";
$question = $line;
}
if (substr($line,0,3)==="[A]") {
echo "<div class='answer'>";
echo "<strong>$question</strong><br/>";
echo "$line</div>";
}
if (substr($line,0,3)==="[-]") {
echo "<br/>";
continue;
}
}
} else {
echo "Unable to open file";
}
?>
好的,让我们假设[Q]
、[A]
和[-]
标记始终位于行的开头
我设置了一个变量,将php脚本解析文件的部分保存在内存中,然后读取该行。这很简单。另外,我以不同的方式管理$question
。这应该能奏效
<?php
$handle = fopen("questions.txt","r");
$part = 0;
$question = "";
if ($handle) {
while (($line = fgets($handle)) !== false) {
if (strlen($line) > 2) {
if (substr($line,0,3)==="[Q]") {
$part = 0;
echo "<a href='#' class='question'>".$line;
$question = $line;
}
else if (substr($line,0,3)==="[A]") {
$part = 1;
echo "</a><div class='answer'>";
echo "<strong>".$question."</strong><br/>";
$line = substr($line, 3, strlen($line)-3);
echo $line;
}
else if (substr($line,0,3)==="[-]") {
echo "</div><br/>";
continue;
}
else {
echo $line;
if ($part == 0)
$question .= $line;
}
}
else {
echo $line;
if ($part == 0)
$question .= $line;
}
}
}
else {
echo "Unable to open file";
}
?>
你不能让我们做所有的工作。您需要在这里发布您的工作,以便我们可以更正它们。一些想法:使用语义结构,如HTMLDD列表、json结构或PHPINI文件,然后使用内置方法进行解析。否则,您将编写自己的解析器——为什么要重新发明轮子?XML抱歉,我明天将发布一个示例。谢谢,这似乎是可行的:)是否可以从答案中去掉[A]呢?只需选择不包括前3个字符的子字符串。我已经编辑了答案中的代码,还修改了3个字符的最小长度:)
<?php
$handle = fopen("questions.txt","r");
$part = 0;
$question = "";
if ($handle) {
while (($line = fgets($handle)) !== false) {
if (strlen($line) > 2) {
if (substr($line,0,3)==="[Q]") {
$part = 0;
echo "<a href='#' class='question'>".$line;
$question = $line;
}
else if (substr($line,0,3)==="[A]") {
$part = 1;
echo "</a><div class='answer'>";
echo "<strong>".$question."</strong><br/>";
$line = substr($line, 3, strlen($line)-3);
echo $line;
}
else if (substr($line,0,3)==="[-]") {
echo "</div><br/>";
continue;
}
else {
echo $line;
if ($part == 0)
$question .= $line;
}
}
else {
echo $line;
if ($part == 0)
$question .= $line;
}
}
}
else {
echo "Unable to open file";
}
?>