2012-01-17 44 views
0

所以我一直在我的網站上工作,我想在每次從bash.org加載頁面時添加一個隨機報價,我Kinda得到它的工作,但我想使用「的preg_replace」而不是「array_splice」擺脫頁面的頁眉和頁腳。隨着目前使用它的代碼擺脫只是頭,我不知道如何擺脫頁腳。請幫忙!Bash.org今日報價

代碼,我現在有

<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,如果你能幫助擺脫頭和頁腳將非常感謝!

- 克里斯

+1

這樣做會讓你的頁面運行速度非常慢,尤其是在Bash.org關閉的情況下。 – ceejayoz 2012-01-17 21:00:16

+2

我建議在頁面加載後通過ajax加載QotD。 – 2012-01-17 21:01:38

+0

@ceejayoz我沒有注意到,它與目前的設置運行緩慢,但你有使用preg_replace的任何知識? – 2012-01-17 21:05:31

回答

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上執行此操作,或者只需編寫腳本並自行運行。

再次 - 糟糕的主意,因爲你沒有自己的內容。這基本上是盜竊。

**這也在考慮你說你都OK改變你的代碼,如果他們改變DOM。解析器會更好**

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

模式要使用過正則表達式中引用的下一個ARG: 主題是內容的file_get_contents從在返回這個案例。它也可以是任何字符串。 匹配是您將結果分配給的變量。它可以是任何你想要的,所以

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站點。

+0

感謝您的幫助..我會看看這是怎麼回事。 – 2012-01-17 21:20:52

+0

肯定 - 檢查我的答案在底部更新... – 2012-01-17 21:35:11

+0

好吧,所以我得到它,但它說「Array([0] => Array()[1] => Array())」它不應該。如果報價不存在,我將如何去做呢?並非所有選擇的數字*實際*都有一個報價。謝謝您的幫助! – 2012-01-17 21:40:14

2

@ceejayoz是正確的,它會使你的網頁運行變慢刮bash.org在這樣的飛行。如果你真的想要報價,你最好分別抓取他們的頁面並緩存一堆結果。

爲了解析頁面,而不是依賴偏移和行號,最好使用PHP Simple HTML DOM Parser這樣的工具從文件中提取適當的內容。它將使人們更方便處理從網頁中提取數據,也將使其更容易更新您的腳本,如果他們改變自己的頁面佈局。第一

+0

感謝您的幫助! – 2012-01-17 21:20:19