腦友記廣場 -> 新手上路 -> 修飾 (制作報紙三步曲之三) 文匯報 登錄 -> 註冊 -> 回復主題 -> 發表主題

maninnet 2006-06-09 23:59
最後, 要動工的是撰寫觀看內文的 wenview.php :

<html><head><title>WenWeiDaily</title></head>
<body>
<B>文匯報網上版</b>
<hr>
<?php
$news_id=$_GET['news_id'];
$cat=$_GET['cat'];
$baseurl = "http://www.wenweipo.com";
$requesturl = "http://www.wenweipo.com/news_print.phtml?news_id=$news_id";
if ($fp = fopen("$requesturl", "r"))
{
  while(!feof($fp))
  {
    $line .= fgets($fp,256);
  }
  fclose($fp);
}
$line = eregi_replace("src=\"","src=\"$baseurl",$line);
$line = eregi_replace("align=\"left\"","",$line);
echo($line);
?>
<br><hr>
WenWei 1.0 Coded by ManInNet
</body></html>

同樣根據 wenwei.php 傳來的參數找尋內文的網址:

$news_id=$_GET['news_id'];
$cat=$_GET['cat'];
$baseurl = "http://www.wenweipo.com";
$requesturl = "http://www.wenweipo.com/news_print.phtml?news_id=$news_id";

例牌讀取內文放在 $line 內:

if ($fp = fopen("$requesturl", "r"))
{
  while(!feof($fp))
  {
    $line .= fgets($fp,256);
  }
  fclose($fp);
}

將圖片的連結更正, 並微調版面:
$line = eregi_replace("src=\"","src=\"$baseurl",$line);
$line = eregi_replace("align=\"left\"","",$line);

大功告成, 顯示 $line 內文 :
echo($line);

dynmv 2006-06-11 00:21
多謝指導!
一定會用心研究.

yuenlong 2006-06-13 01:03
千個謝謝,大家掛著下載,唯獨是肯教授一下,謝謝,我會俾心半抄半學架啦 !!  

請問一下,如果個 news selection menu收埋左響 js. 裡,如何解讀出來 ?

例如: http://football.orisun.com/football/new/20060612/fbnewa0102x0.html

盿匯報的把 menu 放於 form <form method="post" action=""> 裡
但係好似 orisun 放響 js. 裡頭,不如如何解讀出來哩 ?

maninnet 2006-06-13 05:13
QUOTE:
下面是引用yuenlong於2006-06-13 01:03發表的:
千個謝謝,大家掛著下載,唯獨是肯教授一下,謝謝,我會俾心半抄半學架啦 !!  

請問一下,如果個 news selection menu收埋左響 js. 裡,如何解讀出來 ?

例如: http://football.orisun.com/football/new/20060612/fbnewa0102x0.html
.......


http://football.orisun.com/football/new/20060612/fbnewa0102x0.html 為例:
檢視原始檔:
<script language="JavaScript" src="/football/new/current/archive_fbnewa01.js" type="text/javascript"></script>
知道放在:
http://football.orisun.com/football/new/current/archive_fbnewa01.js

下載回來觀察, 其模式如下:
document.write("<option value=\"/football/new/20060613/fbnewa0101x0.html\">森巴兵團盡「地」一煲 (2006/06/13)</option>");

要轉換成:
<a href=/football/new/20060613/fbnewa0101x0.html>森巴兵團盡「地」一煲 (2006/06/13)</a><br>

先人手轉, 就發覺很簡單 1
1. 將 document.write("<option value=\" 變為 <a href=
2. 將 \"> 變為 >
3. 將 </option>"); 變為 </a><br>
以下為未測試的 code :

$requesturl = "http://football.orisun.com/football/new/current/archive_fbnewa01.js";
if ($fp = fopen("$requesturl", "r"))
{
  while(!feof($fp))
  {
    $line = fgets($fp,1024);
    if (eregi("<option value",$line))
    {
    $line=eregi("("<option value=\\\"/","<a href=",$line);
    $line=eregi("\">",">",$line);
    $line=eregi("</option>\");\","</a><br>",$line);
    $outtext = $outtext.$line;
    }
  }
  fclose($fp);
}

上述 code 應該將有關內文同連結列出, 還要作出改動, 就是連結的位置. 假如寫一個叫 footview.php 吧, 網址用 page 作參數, 實際我, 不是用:
<a href=/football/new/20060613/fbnewa0101x0.html>森巴兵團盡「地」一煲 (2006/06/13)</a><br>
而是
<a href=footview.php?page=/football/new/20060613/fbnewa0101x0.html>森巴兵團盡「地」一煲 (2006/06/13)</a><br>
於是這句:
    $line=eregi("("<option value=\\\"/","<a href=",$line);
要改為
    $line=eregi("("<option value=\\\"/","<a href=footview.php?page=",$line);

yuenlong 2006-06-13 23:58
我見呢段 太 陽 波 經 轉欄 :

QUOTE:
function print_archive_list_box(){
document.write("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"28\"><tr><form><td><select name=\"menu1\" onChange=\"MM_jumpMenu('this',this,0)\"><option value=\"#\" selected>--其他內容--</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0101x0.html\">巴西出施仙奴好過卡富 (黃興桂)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0107x0.html\">多哥獎金傾唔掂無王管 (麥馬拿仁)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0109x0.html\">法國搶W將士用命 (笛子波童)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0112x0.html\">多哥為獎金發窮惡 (山度士)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0116x0.html\">巴西圖破決賽周長勝紀錄 (走肖)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0118x0.html\">巴西攻守難題未解決 (米路天奴域)</option>");
document.write("<option value=\"/football/tip/20060613/fbtipa0120x0.html\">南韓後防缺少大「哥」 (邵佳一)</option>");
document.write("</select></td></form></tr></table>");
}



我自己篇了這一段 php 但係出現Warning: eregi(): REG_EESCAPE in /home/..../public_html/pda/su/soccer.php on line 14 的問題,請問我應從 document.write 一句開現斬來改動,定係跟你一樣從 option value 開刀哩 ? 我未學過 php ,好似問得唔係好哩,對不起。

<html><head><meta http-equiv="Content-Type" content="text/html; charset=big5"> <title>太陽波經網上版-名家專欄</title></head>
<body>
太陽波經網上版-名家專欄<hr>
<?
$catList=$_GET['catList'];
$cat=$_GET['cat'];
$baseurl = "http://football.orisun.com/";
$requesturl = "http://football.orisun.com/football/tip/current/archive_fbtipa01.js";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
  $line = fgets($fp,1024);
  if (eregi("(\"<option value=\\",$line))
  {
  $line=eregi("\"/","<a href=soccerview.php?page=",$line);
  $line=eregi("\\\">",">",$line);
  $line=eregi("</option>\");","</a><br>",$line);
  $outtext = $outtext.$line;

  }
}
fclose($fp);
}
$outtext = eregi_replace("<img","<li><img",$outtext);
$allowed_tags = "<a>,<li>";
$outtext = strip_tags($outtext, $allowed_tags);
$outtext = eregi_replace("border=\"0\"","",$outtext);
$outtext = eregi_replace("cellspacing=\"0\"","",$outtext);
$outtext = eregi_replace("cellpadding=\"0\"","",$outtext);
$outtext = eregi_replace("height=\"28\"","",$outtext);
$outtext = eregi_replace("border=\"0\"","",$outtext);
$outtext = eregi_replace("name=\"menu1\"","",$outtext);
$outtext = eregi_replace("value=\"#\"","",$outtext);
$outtext = eregi_replace("</a>","</a><br>\n",$outtext);
$outtext = eregi_replace("news.phtml","soccer.php",$outtext);
echo($outtext);
?>
<hr>
Orisun Soccer 1.0 Powered by ManInNet
</body></html>





順道先問一下以下 soccerview.php 可行吧(因為 soccer.php 未攪定,所以未能試 view.php)

<html><head><title>太陽波經網上版-名家專欄</title></head>
<body>
<B>太陽波經網上版-名家專欄</b>
<hr>
<?php
$news_id=$_GET['news_id'];
$cat=$_GET['cat'];
$baseurl = "http://football.orisun.com";
$requesturl = "http://football.orisun.com/football/tip/current/archive_fbtipa01.js";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
  $line .= fgets($fp,256);
}
fclose($fp);
}
$line = eregi_replace("src=\"","src=\"$baseurl",$line);
$line = eregi_replace("align=\"left\"","",$line);
echo($line);
?>
<br><hr>
Sun Soccer 1.0 Powered by ManInNet
</body></html>



thanks !

[color=darkblue][/color]

yuenlong 2006-06-14 00:23
改為這一段了,也未能成功。(睇番世盃 ... 先)
{
  $line = fgets($fp,256);
  if (eregi("document.write\(\"<option value=",$line))
  {
  $line=eregi("document.write\(\"<option value=\\\"/","<a href=footview.php?page=",$line);
  $line=eregi("\\\">",">",$line);
  $line=eregi("</option>\");","</a><br>",$line);
  $outtext = $outtext.$line;
  }

maninnet 2006-06-14 06:13
睇波睇睇到矇, 有睇漏同打錯 function.

內文置換應用 eregi_replace 打錯 eregi
\ " ) 呢類特殊字元, 好容易用錯用漏, 要測試過先得.
你講得o岩, 漏了 document.write

<?
$requesturl = "http://football.orisun.com/football/new/current/archive_fbnewa01.js";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
  $line = fgets($fp,1024);
  if (!eregi("selected",$line))
  {
    if (eregi("<option value",$line))
    {
    $line=eregi_replace("<option value=\\\\\"","<a href=footview.php?page",$line);
    $line=eregi_replace("\\\\\">",">",$line);
    $line=eregi_replace("</option>\");","</a><br>",$line);
    $line=eregi_replace("document.write\(\"","",$line);
    $line=eregi_replace("\\\\\"","",$line);
    $outtext = $outtext.$line;
    }
  }
}
$allowed_tags = "<a>,<li>,<br>";
$outtext = strip_tags($outtext, $allowed_tags);
fclose($fp);
}

echo($outtext);
?>

yuenlong 2006-06-14 09:40
得左 ! 出到 標題畫面,要整埋個 view.php 先...

QUOTE:
太陽波經網上版-名家專欄
--------------------------------------------------------------------------------
「舒夫軍刀」鋸牛扒 (麥馬拿仁)
波歷克復出火力更猛 (張志德)
沙特閉關自守唔夠班 (蔣世豪)
西班牙複製巴塞無敵陣式 (走肖)
信德國贏「波」提前出線 (米路天奴域)
沙特唔怕突尼西亞 (邵佳一)

--------------------------------------------------------------------------------
Orisun Soccer 1.0 Powered by ManInNet


<html><head><meta http-equiv="Content-Type" content="text/html; charset=big5"> <title>太陽波經網上版-名家專欄</title></head>
<body>
太陽波經網上版-名家專欄<hr>
<?
$requesturl = "http://football.orisun.com/football/tip/current/archive_fbtipa01.js";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
$line = fgets($fp,1024);
if (!eregi("selected",$line))
{
  if (eregi("<option value",$line))
  {
  $line=eregi_replace("<option value=\\\\\"/","<a href=soccerview.php?",$line);
  $line=eregi_replace("\\\\\">",">",$line);
  $line=eregi_replace("</option>\");","</a><br>",$line);
  $line=eregi_replace("document.write\(\"","",$line);
  $line=eregi_replace("\\\\\"","",$line);
  $outtext = $outtext.$line;
  }
}
}
$allowed_tags = "<a>,<li>,<br>";
$outtext = strip_tags($outtext, $allowed_tags);
fclose($fp);
}

echo($outtext);
?>
<hr>
Orisun Soccer 1.0 Powered by ManInNet
</body></html>

yuenlong 2006-06-14 13:34
曾經試過從多方面著手 view.php ,唔知可以從那裡落腳,定位揪出內容
http://football.orisun.com/football/tip/20060614/fbtipa0114x0.html
我可唔可以指定 "<!-- BOX_0 -->" 至 "<!--NEXTPAGE-->" 之間揪出文章內容哩,我亦都試過從textbanner("tip1");及 textbanner("tip2") 指定內容,可能由於夾於 <script language="JavaScript" > 之內未能成功。請指教指教。

QUOTE:
<html><head><title>太陽波經網上版-名家專欄</title></head>
<body>
<B>太陽波經網上版-名家專欄</b>
<hr>
<?php
$news_id=$_GET['news_id'];
$cat=$_GET['cat'];
$baseurl = "http://football.orisun.com";
$requesturl = "http://football.orisun.com/$news_id";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
$line = $line.fgets($fp,1024);
}
  fclose($fp);
}
eregi("textbanner(\"tip2\");(.*)textbanner(\"tip2\");",$line,$matches);
$line = $matches[1];
$allowed_tags = "<div>,<center>,<ul>,<li>,<b>,<br>,<strong>";
$line=eregi_replace("</tr>","<br>",$line);
$line=eregi_replace("</div>","<br>",$line);
$line = strip_tags($line, $allowed_tags);
$line="名家專欄".$line."";
echo($line);
?>
Orisun Soccer 1.0 Powered by ManInNet
</body></html>

maninnet 2006-06-14 15:04
原始檔睇落立立亂, 暫時無機測試, 不過, 立下眼, 我會使用 </form> 到尾. 即: </form>(.*)$ 再用 strip_tags 除去有關 script 的 tag, 再睇下畫面仲有無垃圾.

eregi("</form>(.*)$",$line,$matches);
$line = $matches[1];
$allowed_tags = "<center>,<ul>,<li>,<b>,<br>,<img>";
$line=eregi_replace("</tr>","<br>",$line);
$line = strip_tags($line, $allowed_tags);
$line="名家專欄".$line."";
echo($line);

maninnet 2006-06-14 15:08
仲有, 係 newslist 入面, 呢一句:
$line=eregi_replace("<option value=\\\\\"/","<a href=soccerview.php?",$line);
改為:
$line=eregi_replace("<option value=\\\\\"/","<a href=soccerview.php?news_id=",$line);

先何以俾 soccerview.php get 到 news_id

yuenlong 2006-06-14 20:02
得得得 ... :-)

唯獨是個 textbanner("tip2"); 出現響文章中,這是原文一段的 javascript 裡頭夾著的,用 replace 不能成功啊。

QUOTE:
原文其中一段<p> </p>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td><div align="left">
              <script language="JavaScript" src="/football/js/textbanner.js" type="text/javascript"></script>
    <script language="JavaScript" type="text/javascript">textbanner("tip2");</script>
                </div>          
              </td>
            </tr>
    </table>


View.php


<html><head><title>太陽波經網上版-名家專欄</title></head>
<body>
<B>太陽波經網上版-名家專欄</b>
<hr>
<?php
$news_id=$_GET['news_id'];
$cat=$_GET['cat'];
$baseurl = "http://football.orisun.com";
$requesturl = "http://football.orisun.com/$news_id";
if ($fp = fopen("$requesturl", "r"))
{
while(!feof($fp))
{
$line = $line.fgets($fp,1024);
}
  fclose($fp);
}
eregi("</form>(.*)$",$line,$matches);
$line = $matches[1];
$allowed_tags = "<center>,<ul>,<li>,<b>,<br>";
$line=eregi_replace("</tr>","<br>",$line);
$line=eregi_replace("textbanner(\"tip2\");","<a href=soccer.php>返回</a>",$line);
$line = strip_tags($line, $allowed_tags);
$line="名家專欄".$line."";
echo($line);
?>
Orisun Soccer 1.0 Powered by ManInNet
</body></html>

maninnet 2006-06-14 20:50
所謂修飾的意思, 就是版面未完美, 用得就算, 就由得佢, 要追求好一點, 就要俾D心機, 逐D取代, 例牌使用 eregi_replace
$line = eregi_replace("textbanner\(\"new2\"\);(.*)$","",$line);

順便講一下:
( ) 同呢個都要用 \ 變為 \( \)
而 \ 就麻煩些少, 理論上應為 \\ 但實際上卻要變為 \\\\

yuenlong 2006-06-15 00:05
maninnet 老師,對不起我沒有努力由頭學起,但係你的速成及實戰教學非常感激 !! 我會努力造多些 php ,哈哈。

我以為括號不用加上 \ 哩,所以認不出來

yuenlong 2006-06-22 01:01
想整文字版 www . jack so daily . com,唔知點解個main page 入viewer,php後面總出現2個"??",而 view 一丁點也顯示不出來 ,請問可以幫忙睇一下嘛﹕謝謝


如果想把原文的 <A href=../main/CouponDetails.asp?COUPON_ID_CO=30&COUPON_ID=6214 title="XXXX">

轉換成
http://..........view.php?COUPON_ID=6214
跟著經 view.php 入去下面條link 睇
http://www.jacksodaily.com/main/CouponPrint.asp?COUPON_ID=6214

可以利用eregi_replace把中間 CUPON_ID=6214 取出來嗎 ?

1) $line=eregi_replace("http://www.jacksodaily.com/main/CouponDetails.asp?","./jetsoview.php",$line);
2) ......

maninnet 2006-06-22 11:02
有幾點需要注意:
在 php eregi 一系列 function 中, 有些特殊字元如: () [] , . ? " ' *
要特殊處理. 要加一條 \

在 jetso.php 中:
$line=eregi_replace("http://www.jacksodaily.com/main/CouponDetails.asp?","./jetsoview.php?",$line);
改為:
$line=eregi_replace("http://www.jacksodaily.com/main/CouponDetails.asp\?","./jetsoview.php\?",$line);
不過, 改為:
$line=eregi_replace("http://www.jacksodaily.com/main/CouponDetails.asp","./jetsoview.php",$line);
可解決兩個??的問題.

在 http 的傳送中, 如 jetsoview.php
jetsoview.php?COUPON_ID_CO=30&COUPON_ID=6215&id=&email=

其實傳送了資料給 jetsoview.php 處理, 資料就是 COUPON_ID_CO=30&COUPON_ID=6215&id=&email=

要抽取 COUPON_ID=6215
$COUPON_ID=$_GET['COUPON_ID'];

那麼 $COUPON 的值就是 6215

要抽取的是 coupon 而不是 news, cat 所以, 可以刪除.

$requesturl = "http://www.jacksodaily.com/main/CouponDetails.asp?COUPON_ID=$COUPON_ID";

就可以做到:
http://www.jacksodaily.com/main/CouponDetails.asp?COUPON_ID=6215
的效果

正如剛才所說, [] 是特殊字元, 需改為:

eregi("列印\[著數\](.*)刊登日期",$line,$matches);

yuenlong 2006-06-22 16:45
成功了,亦分享了,又學多一點,謝謝。

yuenlong 2006-07-04 01:06
整緊一個新討論區的文字版,試過想把「板主回應」刪走,試過也不成....遂個字刪,原來個「回」係不能夠於 eregi_replace 中認出來的嘛?

ie. 這個不成的:   $line=eregi_replace("回","",$line);

有無其他方法哩 ... 謝謝 !!!

我發現這2個附號都不能認出【 , 】 的嗎 ?




maninnet 2006-07-04 04:57
big5 編碼用了 \
常用的有: 許苗餐功

可能有更好的辦法, 不過, 我就用:

$line=eregi_replace("回\","",$line);

yuenlong 2006-07-04 07:18
QUOTE:
下面是引用maninnet於2006-07-04 04:57發表的:
big5 編碼用了
常用的有: 陪]壎

可能有更好的辦法, 不過, 我就用:

.......


謝謝,我用上了

$line=eregi_replace("回\","",$line);

Parse error: parse error, unexpected '\"' in .../xxx.php on line 43

maninnet 2006-07-04 22:53
回字原來第二個 character 係 ^ 而不是 \
Big5 碼用了這些 . \ + * ? [ ^ ] ( $ ) 真的是出現問題.
比較保險的方法, 是用 quotemeta
Returns a version of str with a backslash character (\) before every character that is among these: . \\ + * ? [ ^ ] ( $ )

$line=eregi_replace(quotemeta("回"),"",$line);

yuenlong 2006-07-08 14:53
準備「 開 反 喇」食篇 文字版試下。
http://www.terewong.com/pda/or/openrice.php

去到呢一頁的時候..... 圖片移位

http://www.terewong.com/pda/or/openrice_view.php?link=http://www.openrice.com/article30.htm?article_id=1240&pageno=2

但係原文裡面有一個 <BR /> 隔行的 code ,不知為何也轉不到去 <BR>,攪到文字版的圖片移位,請問有何方法哩。

http://www.openrice.com/big5/article30.htm?article_id=1240&pageno=2

以下方法都唔得啊:

$line=eregi_replace("br /","br",$line);
$line=eregi_replace("<br />","<br>",$line);

yuenlong 2006-07-08 16:14
試下先 手機 新聞


http://www.terewong.com/pda/ph/ringhk.php

wmanlam 2006-07-21 00:56
QUOTE:
下面是引用maninnet於2006-06-09 23:59發表的修飾 (制作報紙三步曲之三) 文匯報:
最後, 要動工的是撰寫觀看內文的 wenview.php :

<html><head><title>WenWeiDaily</title></head>
<body>
<B>文匯報網上版</b>
.......



參考過 文匯報 PHP 版, 寫o左個 perl 版.


查看完整版本: [-- 修飾 (制作報紙三步曲之三) 文匯報 --] [-- top --]


Powered by PHPWind v4.0.1 Code © 2003-05 PHPWind
Gzip enabled

You can contact us