php
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[FrontPage]]
# cat php.conf
#
# The following lines prevent .user.ini files from being...
#
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
</Files>
#
# Allow php to handle Multiviews
#
AddType text/html .php
#
# Add index.php to the list of files that will be served...
# indexes.
#
DirectoryIndex index.php
# mod_php options
<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a ....
#
<FilesMatch \.(php|phar)$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pret...
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcac...
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>
#
# ls -ld /var/lib/php/session /var/lib/php/wsdlcache
drwxrwx--- 2 root apache 53248 4月 14 23:34 /var/lib/ph...
drwxrwx--- 2 root apache 6 2月 3 17:27 /var/lib/ph...
*** version 7 sitesearch.inc.php [#s2d3f246]
<?php
function plugin_sitesearch_convert()
{
global $script, $vars;
//
// 機能: ホームページの内容をヒント付きで検索するプラグ...
// とほほさん(http://www.tohoho-web.com/)作 wwwsearch.cg...
// $Id: sitesearch.inc.php,v 1.2 2006/03/14
// Copyright(C) sfuji 2005-2006 All Rights Reseved.
// sfuji'URL : : http://sfuji.sakura.ne.jp
//
// =====================================================...
// 初期化パラメータ
// =====================================================...
//
// ★ 検索対象フォルダ(必須)
// 検索対象のフォルダ名を指定してください。http://~ の...
// ることはできません。複数指定する場合はスペースで区切...
// 右辺サンプル './../pukiwiki/wiki ./../htmldir ./../ho...
$target_dir = './../sfuji/wiki';
// ★ 検索対象ファイル
// 検索対象とするファイルの拡張子を指定します。
$suffix = "htm|html|txt";
// ★ [戻る]ボタン
// [戻る]のリンクをクリックされた時にジャンプする先のペ...
// ください。http://~ ではじまるURLも指定可能です。
$return_url = './index.php';
// ★ 検索対象ファイルの漢字コード
// 検索対象のファイルの漢字コードを指定してください。シ...
// EUCの場合は "euc"、JISコードや不明な場合は "unknown" ...
// sjis や euc の場合は検索が早くなります。
$kcode_file = "euc";
// ★ 検索結果ヒントの表示行数
// 検索結果に、ファイルの内容のヒントとして表示する行数...
$how_many_lines = 3; // マッチした行の前後何...
// ★ 検索キーの表示
$HitCharColor = "#ffffff"; //検索キーの文字色
$HitCharBgcolor = "#3300CC"; //検索キーの背景色
//
// ★ menu欄に検索窓を置く場合は「#sitesearch」が記述され...
// defaultでは「サイト内検索」の頁名となっています。
// menu欄に検索窓を置かない場合は使用しないので無視して...
$disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7"; //検...
$menubarsize = 0; //MenuBarの横サイズが9emより小さ...
//
// =====================================================...
// 本体
// =====================================================...
//
// 初期設定
//引数の取得
if (func_num_args() > 0) {
$array = func_get_args();
$menuwindow = $array[0];
if ($array[1] == "1") $dispofmenu = 1;
}
//pukiwikiを設置してあるディレクトリ取得
$pukiwikidir = DATA_HOME;
if (!$pukiwikidir) {
list( $ScRipt, $Query ) = explode( '\?', $_SERVER['R...
$pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/',"\$...
}
$hit_count = 0; // 見つかった件数
//----------------------------
// メインルーチン
//----------------------------
// MENUに検索窓がある場合の処理
// HTML文書を書き出す
if ($menuwindow == "menu") {
$ret = '<form method="post" action="' . $script . ...
$ret .= '<input type="text" name="WORD" size=23 va...
$ret .= '<input type="radio" name="ANDOR" value="a...
$ret .= '<input type="radio" name="ANDOR" value="o...
if ($menubarsize) $ret .= '<br>';
$ret .= '<input type="submit" value="検索">';
$ret .= '</form>';
if ($dispofmenu) {
$ret .= '<ul>';
$ret .= '<li><small>このホームページの内容を検...
$ret .= '<li><small>複数の単語を入力する時は半...
$ret .= '</ul>';
}
return $ret;
}
// フォームからの入力データを読み込む
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$word = trim($_POST["WORD"]);
if (preg_match('/[\x80-\xff]/i', $word)) {
$jflag = 1; // 日本語が含まれているフラグをセット
}
}
// HTML文書を書き出す
$ret = '<h3>サイト内検索</h3>';
$ret .= '<hr>';
$ret .= '<form method="post" action="' . $script . '...
$ret .= '<nobr>';
$tmp = $word;
str_replace("&","&", $tmp);
str_replace("<","<", $tmp);
str_replace(">",">", $tmp);
str_replace("\"",""", $tmp);
$ret .= '<input type="text" name="WORD" size=25 valu...
if ($_POST{'ANDOR'} == "or") {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
} else {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
}
$ret .= '<input type="submit" value="検索">';
$ret .= '</nobr>';
$ret .= '</form>';
$ret .= '<ul>';
$ret .= '<li>このホームページの内容を検索します。';
$ret .= '<li>複数の単語を入力する時は半角スペースで...
$ret .= '</ul>';
if ($return_url != "") {
$ret .= '<a href="' . $return_url . '">[戻る]</a...
}
$ret .= '<hr>';
if ($_SERVER['REQUEST_METHOD'] == "GET") {
return $ret;
}
if ($_POST{'WORD'}) {
// メタ文字を無効化する
if (!$jflag) {
preg_replace('/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/',...
}
$word = trim($_POST["WORD"]);
# 検索語を分割する
$words = preg_explode('/ +/', $word);
# 検索する
$ret .= '<dl>';
$dirs = preg_explode('/ +/', $target_dir);
$TrgtDirSu = count($dirs);
for ($TrgtDir=0; $TrgtDir < $TrgtDirSu; $TrgtDir...
$files = glob("$dirs[$TrgtDir]/*");
$i=$j=0;
while($i<=count($files)){
if (filetype($files[$i]) == "file"){
if(preg_match("\.($suffix)",$files[$i...
$site[$j] =$files[$i];
$reqret = search($site[$j],$dirs[$...
if ($reqret) {
$ret .= $reqret;
$hit_count++;
}
$j++;
}
}
$i++;
}
}
$ret .= '</dl>';
}
if ($hit_count) {
$ret .= '<hr>';
$ret .= '<div>'.$hit_count.' 件みつかりました。<...
} else {
$ret .= '<div>1件もみつかりませんでした。</div>';
}
return $ret;
}
//
//-------------------------------------------------------
function search($filename, $dir,$words,$how_many_lines,$...
//-------------------------------------------------------
//
# 各種変数を初期化する
$reqret = "";
$wordflag = "";
$htmltitle = "";
$match_count = 0;
//検索するファイルを読み込む
$RecordCount = 0;
$fp = fopen($filename, "r");
while( !(feof($fp) ) ) {
$buf = fgets($fp, 1024);
$buf = rtrim($buf);
$lines[$RecordCount] = $buf;
$RecordCount++;
}
fclose($fp);
for ($i = 0; $i <= count($lines); $i++) {
$line = $lines[$i];
// タイトルを覚えておく
if ((!$htmltitle) && (preg_match('<title>',$line...
$htmltitle = $line;
$htmltitle =preg_replace('/<[^>]*(>|$)/i',''...
}
if ((preg_match("\.htm",$filename)) ||
(preg_match("\.html",$filename))) {
$line = strip_tags($line);
}
//
//OR検索(FALSE)、AND検索(TRUE)
$b_type = FALSE;
if ($_POST['ANDOR'] == "and") {$b_type = TRUE;}
//検索結果、最初はFALSEで検索開始
$b_match = FALSE;
$matchesu = 0;
foreach ($words as $word) {
if (preg_match($word, $line, $regs)) { $mat...
}
if (($b_type) && ($matchesu== count($words))) { ...
if ((!$b_type) && ($matchesu)) { $b_match = TRUE;}
//検索でヒットしました。
if (($b_match) && ($wordflag != "1"))
{
// 見つかったことを覚えておく
$wordflag = 1;
//
# 表示する
$authflag= TRUE; //v1.1 defaultでは閲覧OK
$UrlFileName = $wtarget = $filename;
$UrlFileName = str_replace($dir."/","", $UrlFi...
if (preg_match('/wiki/',$filename)) {
$UrlFileName = str_replace(".txt","", $UrlF...
$UrlFileName = preg_match('/^[0-9a-f]+$/i',...
pack('H*', (string)$UrlFileName) : $UrlFi...
$wtarget = '"./../' . $pukiwikidir . '/?'.$U...
$authflag= check_readable($UrlFileName, fals...
}
if ($authflag) { //v1.1 閲覧OK頁のみを表示
$reqret .= '<dt>■ <a href='.$wtarget.' targe...
if (!$htmltitle)
{$reqret .= $UrlFileName.'</a>';}
else {$reqret .= $htmltitle.'</a>';}
$reqret .= '</dt>';
$reqret .= '<dd>';
$imin = $i - $how_many_lines;
if ($imin < 0) { $imin = 0; }
$imax = $imin + $how_many_lines;
if ($imax > count($lines)) { $imax = count($...
for ($j = $imin; $j <= $imax; $j++) {
$line = $lines[$j];
$line = preg_replace('/<[^>]*(>|$)/','', ...
$tmp = $word;
if ($jflag) {
$tmp = preg_replace('/([\+\*\.\?\^\$\[...
}
foreach ($words as $w) {
$w2 = '/'.$w.'/i';
$line = preg_replace($w2,'<font color="' . $HitCharC...
}
if (preg_match('/\/wiki\//i',$filename)) {
$line = pukiwikiformat($line);
}
//
$reqret .= $line;
$reqret .= '</dd>';
}
} //v1.1 閲覧制限外頁の表示終了
} //検索でのヒット処理終了
}
return $reqret;
}
//
function pukiwikiformat($line){
$line = preg_replace('/^ +/','', $line);
$line = preg_replace('/^-+/','', $line);
$line = preg_replace('/^\*+/','', $line);
$line = preg_replace('/\[#.*\]/','', $line);
$line = str_replace("~","", $line);
$line = str_replace("[[","", $line);
$line = str_replace("]]","", $line);
$line = str_replace("|","|", $line);
$line = str_replace("&br;","", $line);
return $line;
}
//履歴
// v1.0 新規レリース 2005.12.27
// v1.1 閲覧・編集制限の頁を検索対象外にしました。 2006...
// v1.1 検索文字を反転文字にしました。 2006.01.02
// v1.2 MENUに検索窓を設置した場合の処理を追記
?>
*** Version 8 [#lb02839f]
<?php
function plugin_sitesearch_convert()
{
global $script, $vars;
//
// 検索対象フォルダ(必須)
$target_dir = './../sfuji/wiki';
$suffix = "htm|html|txt";
$return_url = './index.php';
$kcode_file = "euc";
$how_many_lines = 3;
$HitCharColor = "#ffffff";
$HitCharBgcolor = "#3300CC";
$disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7";
$menubarsize = 0;
// 初期設定
if (func_num_args() > 0) {
$array = func_get_args();
$menuwindow = $array[0];
if ($array[1] == "1") $dispofmenu = 1;
}
$pukiwikidir = DATA_HOME;
if (!$pukiwikidir) {
list($ScRipt, $Query) = explode('?', $_SERVER['R...
$pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/'...
}
$hit_count = 0;
// メインルーチン
if ($menuwindow == "menu") {
$ret = '<form method="post" action="' . $script ...
$ret .= '<input type="text" name="WORD" size=23 ...
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
if ($menubarsize) $ret .= '<br>';
$ret .= '<input type="submit" value="検索">';
$ret .= '</form>';
if ($dispofmenu) {
$ret .= '<ul>';
$ret .= '<li><small>このホームページの内容を...
$ret .= '<li><small>複数の単語を入力する時は...
$ret .= '</ul>';
}
return $ret;
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$word = trim($_POST["WORD"]);
if (preg_match('/[\x80-\xff]/i', $word)) {
$jflag = 1; // 日本語が含まれているフラグを...
}
}
$ret = '<h3>サイト内検索</h3>';
$ret .= '<hr>';
$ret .= '<form method="post" action="' . $script . '...
$ret .= '<nobr>';
$tmp = htmlspecialchars($word, ENT_QUOTES, 'UTF-8');
$ret .= '<input type="text" name="WORD" size=25 valu...
if ($_POST['ANDOR'] == "or") {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
} else {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
}
$ret .= '<input type="submit" value="検索">';
$ret .= '</nobr>';
$ret .= '</form>';
$ret .= '<ul>';
$ret .= '<li>このホームページの内容を検索します。';
$ret .= '<li>複数の単語を入力する時は半角スペースで...
$ret .= '</ul>';
if ($return_url != "") {
$ret .= '<a href="' . $return_url . '">[戻る]</a...
}
$ret .= '<hr>';
if ($_SERVER['REQUEST_METHOD'] == "GET") {
return $ret;
}
if ($_POST['WORD']) {
if (!$jflag) {
$word = preg_replace('/([\+\*\.\?\^\$\[\-\]\...
}
$word = trim($_POST["WORD"]);
$words = preg_split('/ +/', $word);
$ret .= '<dl>';
$dirs = preg_split('/ +/', $target_dir);
foreach ($dirs as $dir) {
$files = glob("$dir/*");
foreach ($files as $file) {
if (is_file($file) && preg_match("/\.($s...
$reqret = search($file, $dir, $words...
if ($reqret) {
$ret .= $reqret;
$hit_count++;
}
}
}
}
$ret .= '</dl>';
}
if ($hit_count) {
$ret .= '<hr>';
$ret .= '<div>' . $hit_count . ' 件みつかりまし...
} else {
$ret .= '<div>1件もみつかりませんでした。</div>';
}
return $ret;
}
function search($filename, $dir, $words, $how_many_lines...
{
$reqret = "";
$wordflag = "";
$htmltitle = "";
$lines = file($filename, FILE_IGNORE_NEW_LINES);
$RecordCount = count($lines);
foreach ($lines as $i => $line) {
if (!$htmltitle && preg_match('/<title>/i', $lin...
$htmltitle = strip_tags($line);
}
if (preg_match("/\.htm|\.html/i", $filename)) {
$line = strip_tags($line);
}
$b_type = ($_POST['ANDOR'] == "and");
$b_match = false;
$matchesu = 0;
foreach ($words as $word) {
if (preg_match("/$word/i", $line)) {
$matchesu++;
}
}
if (($b_type && $matchesu == count($words)) || (...
$b_match = true;
}
if ($b_match && !$wordflag) {
$wordflag = 1;
$UrlFileName = str_replace($dir . "/", "", $...
if (preg_match('/\/wiki\//', $filename)) {
$UrlFileName = str_replace(".txt", "", $...
$UrlFileName = preg_match('/^[0-9a-f]+$/...
$wtarget = '"./../' . $pukiwikidir . '/?...
} else {
$wtarget = $filename;
}
$reqret .= '<dt>■ <a href=' . $wtarget . ' t...
$reqret .= $htmltitle ? $htmltitle : $UrlFil...
$reqret .= '</a></dt>';
$reqret .= '<dd>';
$imin = max(0, $i - $how_many_lines);
$imax = min($RecordCount - 1, $imin + $how_m...
for ($j = $imin; $j <= $imax; $j++) {
$line = strip_tags($lines[$j]);
foreach ($words as $w) {
$line = preg_replace("/$w/i", '<font...
}
$reqret .= $line;
}
$reqret .= '</dd>';
}
}
return $reqret;
}
?>
終了行:
[[FrontPage]]
# cat php.conf
#
# The following lines prevent .user.ini files from being...
#
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
</Files>
#
# Allow php to handle Multiviews
#
AddType text/html .php
#
# Add index.php to the list of files that will be served...
# indexes.
#
DirectoryIndex index.php
# mod_php options
<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a ....
#
<FilesMatch \.(php|phar)$>
SetHandler application/x-httpd-php
</FilesMatch>
#
# Uncomment the following lines to allow PHP to pret...
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcac...
#php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>
#
# ls -ld /var/lib/php/session /var/lib/php/wsdlcache
drwxrwx--- 2 root apache 53248 4月 14 23:34 /var/lib/ph...
drwxrwx--- 2 root apache 6 2月 3 17:27 /var/lib/ph...
*** version 7 sitesearch.inc.php [#s2d3f246]
<?php
function plugin_sitesearch_convert()
{
global $script, $vars;
//
// 機能: ホームページの内容をヒント付きで検索するプラグ...
// とほほさん(http://www.tohoho-web.com/)作 wwwsearch.cg...
// $Id: sitesearch.inc.php,v 1.2 2006/03/14
// Copyright(C) sfuji 2005-2006 All Rights Reseved.
// sfuji'URL : : http://sfuji.sakura.ne.jp
//
// =====================================================...
// 初期化パラメータ
// =====================================================...
//
// ★ 検索対象フォルダ(必須)
// 検索対象のフォルダ名を指定してください。http://~ の...
// ることはできません。複数指定する場合はスペースで区切...
// 右辺サンプル './../pukiwiki/wiki ./../htmldir ./../ho...
$target_dir = './../sfuji/wiki';
// ★ 検索対象ファイル
// 検索対象とするファイルの拡張子を指定します。
$suffix = "htm|html|txt";
// ★ [戻る]ボタン
// [戻る]のリンクをクリックされた時にジャンプする先のペ...
// ください。http://~ ではじまるURLも指定可能です。
$return_url = './index.php';
// ★ 検索対象ファイルの漢字コード
// 検索対象のファイルの漢字コードを指定してください。シ...
// EUCの場合は "euc"、JISコードや不明な場合は "unknown" ...
// sjis や euc の場合は検索が早くなります。
$kcode_file = "euc";
// ★ 検索結果ヒントの表示行数
// 検索結果に、ファイルの内容のヒントとして表示する行数...
$how_many_lines = 3; // マッチした行の前後何...
// ★ 検索キーの表示
$HitCharColor = "#ffffff"; //検索キーの文字色
$HitCharBgcolor = "#3300CC"; //検索キーの背景色
//
// ★ menu欄に検索窓を置く場合は「#sitesearch」が記述され...
// defaultでは「サイト内検索」の頁名となっています。
// menu欄に検索窓を置かない場合は使用しないので無視して...
$disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7"; //検...
$menubarsize = 0; //MenuBarの横サイズが9emより小さ...
//
// =====================================================...
// 本体
// =====================================================...
//
// 初期設定
//引数の取得
if (func_num_args() > 0) {
$array = func_get_args();
$menuwindow = $array[0];
if ($array[1] == "1") $dispofmenu = 1;
}
//pukiwikiを設置してあるディレクトリ取得
$pukiwikidir = DATA_HOME;
if (!$pukiwikidir) {
list( $ScRipt, $Query ) = explode( '\?', $_SERVER['R...
$pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/',"\$...
}
$hit_count = 0; // 見つかった件数
//----------------------------
// メインルーチン
//----------------------------
// MENUに検索窓がある場合の処理
// HTML文書を書き出す
if ($menuwindow == "menu") {
$ret = '<form method="post" action="' . $script . ...
$ret .= '<input type="text" name="WORD" size=23 va...
$ret .= '<input type="radio" name="ANDOR" value="a...
$ret .= '<input type="radio" name="ANDOR" value="o...
if ($menubarsize) $ret .= '<br>';
$ret .= '<input type="submit" value="検索">';
$ret .= '</form>';
if ($dispofmenu) {
$ret .= '<ul>';
$ret .= '<li><small>このホームページの内容を検...
$ret .= '<li><small>複数の単語を入力する時は半...
$ret .= '</ul>';
}
return $ret;
}
// フォームからの入力データを読み込む
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$word = trim($_POST["WORD"]);
if (preg_match('/[\x80-\xff]/i', $word)) {
$jflag = 1; // 日本語が含まれているフラグをセット
}
}
// HTML文書を書き出す
$ret = '<h3>サイト内検索</h3>';
$ret .= '<hr>';
$ret .= '<form method="post" action="' . $script . '...
$ret .= '<nobr>';
$tmp = $word;
str_replace("&","&", $tmp);
str_replace("<","<", $tmp);
str_replace(">",">", $tmp);
str_replace("\"",""", $tmp);
$ret .= '<input type="text" name="WORD" size=25 valu...
if ($_POST{'ANDOR'} == "or") {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
} else {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
}
$ret .= '<input type="submit" value="検索">';
$ret .= '</nobr>';
$ret .= '</form>';
$ret .= '<ul>';
$ret .= '<li>このホームページの内容を検索します。';
$ret .= '<li>複数の単語を入力する時は半角スペースで...
$ret .= '</ul>';
if ($return_url != "") {
$ret .= '<a href="' . $return_url . '">[戻る]</a...
}
$ret .= '<hr>';
if ($_SERVER['REQUEST_METHOD'] == "GET") {
return $ret;
}
if ($_POST{'WORD'}) {
// メタ文字を無効化する
if (!$jflag) {
preg_replace('/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/',...
}
$word = trim($_POST["WORD"]);
# 検索語を分割する
$words = preg_explode('/ +/', $word);
# 検索する
$ret .= '<dl>';
$dirs = preg_explode('/ +/', $target_dir);
$TrgtDirSu = count($dirs);
for ($TrgtDir=0; $TrgtDir < $TrgtDirSu; $TrgtDir...
$files = glob("$dirs[$TrgtDir]/*");
$i=$j=0;
while($i<=count($files)){
if (filetype($files[$i]) == "file"){
if(preg_match("\.($suffix)",$files[$i...
$site[$j] =$files[$i];
$reqret = search($site[$j],$dirs[$...
if ($reqret) {
$ret .= $reqret;
$hit_count++;
}
$j++;
}
}
$i++;
}
}
$ret .= '</dl>';
}
if ($hit_count) {
$ret .= '<hr>';
$ret .= '<div>'.$hit_count.' 件みつかりました。<...
} else {
$ret .= '<div>1件もみつかりませんでした。</div>';
}
return $ret;
}
//
//-------------------------------------------------------
function search($filename, $dir,$words,$how_many_lines,$...
//-------------------------------------------------------
//
# 各種変数を初期化する
$reqret = "";
$wordflag = "";
$htmltitle = "";
$match_count = 0;
//検索するファイルを読み込む
$RecordCount = 0;
$fp = fopen($filename, "r");
while( !(feof($fp) ) ) {
$buf = fgets($fp, 1024);
$buf = rtrim($buf);
$lines[$RecordCount] = $buf;
$RecordCount++;
}
fclose($fp);
for ($i = 0; $i <= count($lines); $i++) {
$line = $lines[$i];
// タイトルを覚えておく
if ((!$htmltitle) && (preg_match('<title>',$line...
$htmltitle = $line;
$htmltitle =preg_replace('/<[^>]*(>|$)/i',''...
}
if ((preg_match("\.htm",$filename)) ||
(preg_match("\.html",$filename))) {
$line = strip_tags($line);
}
//
//OR検索(FALSE)、AND検索(TRUE)
$b_type = FALSE;
if ($_POST['ANDOR'] == "and") {$b_type = TRUE;}
//検索結果、最初はFALSEで検索開始
$b_match = FALSE;
$matchesu = 0;
foreach ($words as $word) {
if (preg_match($word, $line, $regs)) { $mat...
}
if (($b_type) && ($matchesu== count($words))) { ...
if ((!$b_type) && ($matchesu)) { $b_match = TRUE;}
//検索でヒットしました。
if (($b_match) && ($wordflag != "1"))
{
// 見つかったことを覚えておく
$wordflag = 1;
//
# 表示する
$authflag= TRUE; //v1.1 defaultでは閲覧OK
$UrlFileName = $wtarget = $filename;
$UrlFileName = str_replace($dir."/","", $UrlFi...
if (preg_match('/wiki/',$filename)) {
$UrlFileName = str_replace(".txt","", $UrlF...
$UrlFileName = preg_match('/^[0-9a-f]+$/i',...
pack('H*', (string)$UrlFileName) : $UrlFi...
$wtarget = '"./../' . $pukiwikidir . '/?'.$U...
$authflag= check_readable($UrlFileName, fals...
}
if ($authflag) { //v1.1 閲覧OK頁のみを表示
$reqret .= '<dt>■ <a href='.$wtarget.' targe...
if (!$htmltitle)
{$reqret .= $UrlFileName.'</a>';}
else {$reqret .= $htmltitle.'</a>';}
$reqret .= '</dt>';
$reqret .= '<dd>';
$imin = $i - $how_many_lines;
if ($imin < 0) { $imin = 0; }
$imax = $imin + $how_many_lines;
if ($imax > count($lines)) { $imax = count($...
for ($j = $imin; $j <= $imax; $j++) {
$line = $lines[$j];
$line = preg_replace('/<[^>]*(>|$)/','', ...
$tmp = $word;
if ($jflag) {
$tmp = preg_replace('/([\+\*\.\?\^\$\[...
}
foreach ($words as $w) {
$w2 = '/'.$w.'/i';
$line = preg_replace($w2,'<font color="' . $HitCharC...
}
if (preg_match('/\/wiki\//i',$filename)) {
$line = pukiwikiformat($line);
}
//
$reqret .= $line;
$reqret .= '</dd>';
}
} //v1.1 閲覧制限外頁の表示終了
} //検索でのヒット処理終了
}
return $reqret;
}
//
function pukiwikiformat($line){
$line = preg_replace('/^ +/','', $line);
$line = preg_replace('/^-+/','', $line);
$line = preg_replace('/^\*+/','', $line);
$line = preg_replace('/\[#.*\]/','', $line);
$line = str_replace("~","", $line);
$line = str_replace("[[","", $line);
$line = str_replace("]]","", $line);
$line = str_replace("|","|", $line);
$line = str_replace("&br;","", $line);
return $line;
}
//履歴
// v1.0 新規レリース 2005.12.27
// v1.1 閲覧・編集制限の頁を検索対象外にしました。 2006...
// v1.1 検索文字を反転文字にしました。 2006.01.02
// v1.2 MENUに検索窓を設置した場合の処理を追記
?>
*** Version 8 [#lb02839f]
<?php
function plugin_sitesearch_convert()
{
global $script, $vars;
//
// 検索対象フォルダ(必須)
$target_dir = './../sfuji/wiki';
$suffix = "htm|html|txt";
$return_url = './index.php';
$kcode_file = "euc";
$how_many_lines = 3;
$HitCharColor = "#ffffff";
$HitCharBgcolor = "#3300CC";
$disppage = "%A5%B5%A5%A4%A5%C8%C6%E2%B8%A1%BA%F7";
$menubarsize = 0;
// 初期設定
if (func_num_args() > 0) {
$array = func_get_args();
$menuwindow = $array[0];
if ($array[1] == "1") $dispofmenu = 1;
}
$pukiwikidir = DATA_HOME;
if (!$pukiwikidir) {
list($ScRipt, $Query) = explode('?', $_SERVER['R...
$pukiwikidir = preg_replace('/(\/)(.*)(\/)(.*)/'...
}
$hit_count = 0;
// メインルーチン
if ($menuwindow == "menu") {
$ret = '<form method="post" action="' . $script ...
$ret .= '<input type="text" name="WORD" size=23 ...
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
if ($menubarsize) $ret .= '<br>';
$ret .= '<input type="submit" value="検索">';
$ret .= '</form>';
if ($dispofmenu) {
$ret .= '<ul>';
$ret .= '<li><small>このホームページの内容を...
$ret .= '<li><small>複数の単語を入力する時は...
$ret .= '</ul>';
}
return $ret;
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$word = trim($_POST["WORD"]);
if (preg_match('/[\x80-\xff]/i', $word)) {
$jflag = 1; // 日本語が含まれているフラグを...
}
}
$ret = '<h3>サイト内検索</h3>';
$ret .= '<hr>';
$ret .= '<form method="post" action="' . $script . '...
$ret .= '<nobr>';
$tmp = htmlspecialchars($word, ENT_QUOTES, 'UTF-8');
$ret .= '<input type="text" name="WORD" size=25 valu...
if ($_POST['ANDOR'] == "or") {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
} else {
$ret .= '<input type="radio" name="ANDOR" value=...
$ret .= '<input type="radio" name="ANDOR" value=...
}
$ret .= '<input type="submit" value="検索">';
$ret .= '</nobr>';
$ret .= '</form>';
$ret .= '<ul>';
$ret .= '<li>このホームページの内容を検索します。';
$ret .= '<li>複数の単語を入力する時は半角スペースで...
$ret .= '</ul>';
if ($return_url != "") {
$ret .= '<a href="' . $return_url . '">[戻る]</a...
}
$ret .= '<hr>';
if ($_SERVER['REQUEST_METHOD'] == "GET") {
return $ret;
}
if ($_POST['WORD']) {
if (!$jflag) {
$word = preg_replace('/([\+\*\.\?\^\$\[\-\]\...
}
$word = trim($_POST["WORD"]);
$words = preg_split('/ +/', $word);
$ret .= '<dl>';
$dirs = preg_split('/ +/', $target_dir);
foreach ($dirs as $dir) {
$files = glob("$dir/*");
foreach ($files as $file) {
if (is_file($file) && preg_match("/\.($s...
$reqret = search($file, $dir, $words...
if ($reqret) {
$ret .= $reqret;
$hit_count++;
}
}
}
}
$ret .= '</dl>';
}
if ($hit_count) {
$ret .= '<hr>';
$ret .= '<div>' . $hit_count . ' 件みつかりまし...
} else {
$ret .= '<div>1件もみつかりませんでした。</div>';
}
return $ret;
}
function search($filename, $dir, $words, $how_many_lines...
{
$reqret = "";
$wordflag = "";
$htmltitle = "";
$lines = file($filename, FILE_IGNORE_NEW_LINES);
$RecordCount = count($lines);
foreach ($lines as $i => $line) {
if (!$htmltitle && preg_match('/<title>/i', $lin...
$htmltitle = strip_tags($line);
}
if (preg_match("/\.htm|\.html/i", $filename)) {
$line = strip_tags($line);
}
$b_type = ($_POST['ANDOR'] == "and");
$b_match = false;
$matchesu = 0;
foreach ($words as $word) {
if (preg_match("/$word/i", $line)) {
$matchesu++;
}
}
if (($b_type && $matchesu == count($words)) || (...
$b_match = true;
}
if ($b_match && !$wordflag) {
$wordflag = 1;
$UrlFileName = str_replace($dir . "/", "", $...
if (preg_match('/\/wiki\//', $filename)) {
$UrlFileName = str_replace(".txt", "", $...
$UrlFileName = preg_match('/^[0-9a-f]+$/...
$wtarget = '"./../' . $pukiwikidir . '/?...
} else {
$wtarget = $filename;
}
$reqret .= '<dt>■ <a href=' . $wtarget . ' t...
$reqret .= $htmltitle ? $htmltitle : $UrlFil...
$reqret .= '</a></dt>';
$reqret .= '<dd>';
$imin = max(0, $i - $how_many_lines);
$imax = min($RecordCount - 1, $imin + $how_m...
for ($j = $imin; $j <= $imax; $j++) {
$line = strip_tags($lines[$j]);
foreach ($words as $w) {
$line = preg_replace("/$w/i", '<font...
}
$reqret .= $line;
}
$reqret .= '</dd>';
}
}
return $reqret;
}
?>
ページ名: