Bash.org今日报价

时间:2012-01-17 20:57:49

标签: php header tags quote

所以我一直在我的网站上工作,我想在每次从bash.org加载页面时添加一个随机引用,我 Kinda 让它工作但我在想关于使用“preg_replace”而不是“array_splice”来摆脱页面的页眉和页脚。随着我目前使用它的代码摆脱只是标题,我无法弄清楚如何摆脱页脚。请帮助!

我目前的代码

<html>
<head>
    <title>Chris's Website</title>
    <link href="lesson_3_css.css" type"text/css" rel="stylesheet"/>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css"> body, a, a:hover {cursor: url(http://q3ait.org/~bogauschc/WorkInProgress/test/proxy/cur116.cur), progress; scrollbar-3dlight-color:#FFFFFF; scrollbar-arrow-color:#FFFFFF; scrollbar-base-color:#FF9900; scrollbar-darkshadow-color:#333333; scrollbar-face-color:#FF9900; scrollbar-highlight-color:#FFFFFF; scrollbar-shadow-color:#000000;}
body {
    background-image: url(Speaker%20Fire.png);
}
.title div {
    color: #F00;
}
</style>

<script language="JavaScript">
function clock(){
var time = new Date()
var hour = time.getHours()
var minute = time.getMinutes()
var second = time.getSeconds()
var ampm = " PM "
if (hour < 12){
ampm = " AM "
}
if (hour > 12){
hour -= 12
}
if (hour < 10){
hour = " " + hour
}
if (minute < 10){
min = "0" + minute
}
if (second < 10){
second = "0" + second
}
document.clockForm.clockBtn.value = hour + ":" + minute + ":" + second + ampm
setTimeout("clock()", 1000)
}
window.onload=clock;
</script>

</head>
<body>
    <div class="title">
      <div align="center">
        <p>&nbsp;</p>

            <td align="left"><form name="clockForm">
          <input type="button" name="clockBtn" value=" " />
        </form>
        <a><img src="http://www.reliablecounter.com/count.php?page=bogauschc.no-ip.org&digit=style/plain/4/&reloads=0" border="2"></a>
        </br>
      </div>
    </div>
<div class="nav">
  <p><a href="http://q3ait.org/~bogauschc/html">HTML files</a></p>
  <p><a href="http://turntable.fm/mayor_bees_room">My Turntable</a></p>
  <p><a href="http://q3ait.org">Q3AIT</a></p>
  <p><a href="http://www.chathamcentralschools.com/hs/">Chatham High</a></p>
  <p><a href="http://q3ait.org/~bogauschc/WorkInProgress">Work In Progress</a></p>
  <p><a href="games.html">Games</a></p>
  <p><a href="webcams.html">Webcams</a></p>

</div>
    <div class="main" align="center">
</br>
    <p>Im Chris and I Can Do Things!</p>
    <p>&nbsp;</p>
<?php
if(!$_GET['n']) {
$num = rand(1,400);
$open = fopen("http://bash.org/?".$num, "r");
$line = file("http://bash.org/?".$num);
array_splice($line, 0, 83);
array_splice($line, 89, 200);
foreach ($line as $line_num => $line) {
echo $line;
}
}
?>
<p>&nbsp;</p>
<iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FChriss-Website%2F218161641601802&amp;width=292&amp;height=62&amp;colorscheme=light&amp;show_faces=false&amp;border_color&amp;stream=false&amp;header=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:292px; height:62px;allowTransparency="true"></iframe>
        <p>&nbsp;</p>
        <script language="JavaScript">
            VIH_BackColor = "palegreen";
            VIH_ForeColor = "navy";
            VIH_FontPix = "16";
            VIH_DisplayFormat = "You are visiting from:<br>IP Address: %%IP%%<br>Host: %%HOST%%";
            VIH_DisplayOnPage = "yes";
    </script>
<script language="JavaScript" src="http://www.hashemian.com/js/visitorIP.js.php"></script>

    <p><a href="IndexOf.html">Index Of Files For This Page</a></p>
</div>
</body>
</html>

这是一个bash引用http://bash.org/?47的示例 我的网站是http://q3ait.org/~bogauschc/

这就是整个index.php,如果你能帮助摆脱页眉和页脚,那将非常感激!

- 克里斯

2 个答案:

答案 0 :(得分:2)

@ceejayoz是对的,它会让你的页面运行速度变慢,就像那样抓住bash.org。如果你真的想要引用,你最好分别抓取他们的页面并缓存一堆结果。

要解析页面,而不是依赖偏移量和行号,最好使用PHP Simple HTML DOM Parser之类的工具从文件中提取相应的内容。它将使处理从页面中提取数据变得更加容易,并且如果他们改变页面布局,也可以更容易地更新脚本。

答案 1 :(得分:2)

首先要做的事情 - 这是一个不好的方法。正如ceejay在评论中指出的那样,飞行中异常糟糕。但是 -

$data = file_get_contents('http://whatever-bash-url-is.php');
preg_match_all ("/<p class=\"qt\">([^`]*?)<\/p>/", $data, $matches);
print_r($matches);

那应该只是给你qt类中的内容,这似乎是你想要的。

执行此操作的正确方法 - 除了要求他们允许使用他们的内容,因为他们似乎不提供API或RSS订阅源 - 将在后端运行此操作并存储您获得的每个独特报价您自己的数据库,并在页面加载而不是远程URL上提供服务。您可以在以合理间隔运行的cron上执行此操作,或者只编写脚本并自行运行。

再次 - 糟糕的主意,因为你不拥有内容。这基本上是盗窃。

**这也在考虑你说你可以改变代码,如果他们改变他们的dom。解析器会更好**

preg_match_all()http://php.net/manual/en/function.preg-match-all.php args:模式,主题,匹配

pattern是你打算用来交叉引用下一个arg的正则表达式: subject是在这种情况下从file_get_contents返回的内容。它也可以是任何字符串。 matches是您将结果分配给的变量。它可以是你想要的任何东西,所以

preg_match_all("\d+", 'long string containing 2 expected digits to match this 1 pattern', $results);

应该产生这样的数组:

$results = [
    [0] => 2,
    [1] => 1
];

因为字符串中的数字2和1是唯一匹配我提供的\ d +(仅数字)正则表达式模式的东西。

正则表达式可能看起来很恐怖,但不要气馁。基本的谷歌搜索通常可以帮助您找到所需的模式。或者你可以问这里。

顺便说一句,您也可以使用preg_match(),因为您只需要查找一个结果。我只是不知道他们是否有一个包含很多结果的页面,所以我选择了preg_match_all()。

为了避免空结果,你可以在那里抛出一个条件:

foreach($matches AS $m)
{
    if($m)
    {
        //process only if there is something here
    }
}

请注意,上面的示例适用于preg_match。我相信Preg_match_all将返回一个多维数组。用户基本的调试工具,如print_r,可根据您的需要进行调整。 此外,我假设您在不是由用户启动的后端脚本上运行此示例时使用此示例。如果你想要一个动态选项,你应该查看ajaxing这个请求,然后创建一个递归函数,如果没有结果,将重新调用bash站点。