[改造]一行目のログがスルーされる
お世話になります。
わからないので、丸投げで申し訳ないですが、ご返答お願いします。
あるBBS(http://php.s3.to/bbs/bbs8.php)を改造して「検索部分」だけ使用したいと思います(書き込みなんかは別のBBSを使用してます)
なのですが、改造したいphpは、仕様で一行目のログがスルーされるのです。
それで、一行目も検索対象にしたいのですが、どこが邪魔していますか?
/*-- 検索 --*/
function search() {
if (trim($_GET['w']) != "") {
// スペース区切りを配列に
$word = htmlspecialchars($_GET['w']);
$words = preg_split("/( | )+/", $word);
// ログ決定
if ($_GET['logs'] == 0) {
$lines = file(LOGFILE);
array_shift($lines);
}
elseif (file_exists(PASTDIR.$_GET['logs'].".txt")) {
$lines = file(PASTDIR.$_GET['logs'].".txt");
}
else {
return false;
}
$result = array();
foreach ($lines as $line) { //ログを走査
$find = FALSE; //フラグ
foreach ($words as $w) {
if ($w == "") continue; //空文字はパス
if (stristr($line, $w)) { //マッチ
$find = TRUE;
if ($_GET['kyo']) $line = str_replace($w, "<b style='color:green;background-color:#ffff66'>$w</b>", $line);
}
elseif ($_GET['andor'] == "and") { //ANDの場合マッチしないなら次のログへ
$find = FALSE;
break;
}
}
if($find) array_push($result, $line); //マッチしたログを配列に
}
$arg['total'] = count($result);
if (get_magic_quotes_gpc()) $word = stripslashes($word);
$arg['word'] = $word;
if (count($result) > 0) {
$page_def = ($_GET['pp']) ? (int)$_GET['pp'] : PASTDEF;
$page = ($_GET['page']) ? (int)$_GET['page'] : 0;
// 記事表示
for ($i = $page; $i < $page+$page_def; $i++) {
$oya = $res = "";
if (!trim($result[$i])) break;
list($num,$name,$pass,$date,$time1,$imgno,$host,$email,$mailflag,$url,$icon,$tail,$imgw,$imgh,$imgflag,$com) = explode(",", $result[$i]);
list($color,$b_color) = explode(";", $col);
if ($url != "") $url = "http://".$url;
if ($icon != "") $icon = I_DIR.$icon;
if ($type == 0) $oya = true;
else $res = $type;
// 親記事格納
$arg['out'][] = compact('num','name','pass','date','time1','imgno','host','email','mailflag','url','icon','tail','imgw','imgh','imgflag','com');
}
$arg['page_def'] = $page_def;
$arg['st'] = $page + 1;
$arg['to'] = $i;
お礼
たった1行で書ける内容だったんですね・・・勉強になります。 試したところ期待通りの結果になりました。どうもありがとうございます!