掲示板TOP
1 ZA (10/03/22 17:30)いつもお世話になります。
Yomi-Searchの検索にメタサーチという機能があり、updirの検索を設定したいのですが、以下の部分の設定記述がわかりません。 どのように設定すればよいでしょうか? 宜しくお願いします。updirver2.11を使用しています。
%keyword = ( 'yahoo', "p=$K_euc", 'google', "q=$K_pp2", 'goo', "MT=$K_euc", 'excite', "s=$K_plus", 'FRESHEYE', "kw=$K_pp",
2 webmaster (10/03/23 11:30)下のような内容で検索出来ると思われます。
%keyword = ( 'updir',"mode=search&word=$K_euc",
----------------------------------- あわせてupdir.phpの36行目あたりの 以下の部分を書き換えてください。
//search if($mode == "search"){ $word = value_check($_POST['word']); $cd = value_check($_POST['cd']); }
次のように書き変えてください。
//search if($mode == "search"){ if(!isset($_POST['word'])){ $_POST['cd'] = 1; $_POST['word'] = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); } $word = value_check($_POST['word']); $cd = value_check($_POST['cd']); }
3 ZA (10/03/23 16:58)いつもありがとうございます。思うようにできました。
http://updir.net/bbs/view.php?num=1002051845593873
検索について上記では、2.14の仕様になっていますが、 2.11では以下になっていて若干違う為、
list($idn,$idk) = explode(".",$index_file); $lines = file($log_file); for($i=0;$i<count($lines);$i++){ list($nfi,$ofi,$opf,$savefile,$snsavefile,$uf_kname, $suf_kname,$shtmlfile,$delpass,$title,$dirnum,$text) = explode("<>","$lines[$i]"); $topicnum++; if($opf == "1"){continue;} $comn = explode("<:>",$text); list($ttime,$tname,$tcom,$tuip,$turh,$tuua) = explode("<::>",$comn[0]);
$resn = count($comn); $searchlist = ""; $searchlist .= "$savefile"; $searchlist .= "$title"; $searchlist .= "$ttime"; $searchlist .= "$tname"; $searchlist .= "$tcom";
if(stristr($searchlist,$word)){ $hit++; $pagenum = ceil($topicnum/$page_max); if($pagenum == "1"){$pagenum = "";} if($title != ""){$linkv = "$title($resn)";}else{$linkv = "$savefile";}
http://updir.net/download/bbs/20100207_search.txt が適用できませんでした。
2.11でも検索時にスペースで区切って複数単語の検索が出来るようにはなりませんでしょうか?
すみません。もうひとつ、検索結果が1列で表示されますが、20件くらいでページ送りにできませんでしょうか?
宜しくお願い致します。 4 webmaster (10/03/24 13:10)新しいバージョン(ver2.15)で 複数ワードの検索とページ送りに対応しました。 そちらをお試しください。
ver2.11に対応させるには以下の手順で行ってください。 ----------------------------------- ver2.11 の37から40行目あたり
//search if($mode == "search"){ $word = value_check($_POST['word']); $cd = value_check($_POST['cd']); }
上の内容を次の内容と置き換えてください。
//search if($mode == "search"){ $word = value_check($_GET['word']); if(isset($_POST['word'])){ $word = value_check($_POST['word']); } }
----------------------------------- ver2.11 の502から656行目に掛けて
502行目 if($mode == "search" and $cd == ""){ から 656行目 if($mode == "up"){ まで
上の内容を次の内容と置き換えてください。 updir.php ver2.15の508から687行目までを上書きしてください。
508行目 if($mode == "search"){ から 687行目 if($mode == "up"){ 5 ZA (10/03/24 14:41)早速の対応ありがとうございます。 2.11でもページ送り、複数検索になりました。
//search if($mode == "search"){ $word = value_check($_GET['word']); if(isset($_POST['word'])){ $word = value_check($_POST['word']); } }
上記、ver2.11 の37から40行目あたりの以下を、Yomi-Searchの検索にメタサーチ用に変更すると、次の20件→リンクでページ送りすると、まだ、検索結果があるのに、「検索ワード ?i?`?????? は見つかりませんでした。」となり、文字化けして結果が表示されなくなってしまいます。 どのようにしたらよいでしょうか?
宜しくお願いします。
//search if($mode == "search"){ if(!isset($_POST['word'])){ $_POST['cd'] = 1; $_POST['word'] = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); } $word = value_check($_POST['word']); $cd = value_check($_POST['cd']); }
6 webmaster (10/03/24 20:24)以下の内容でお試しください。
----------------------------------- //search の部分は次のようにしてください。
//search if($mode == "search"){ if($_GET['ys'] == 1){ $word = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); } elseif(isset($_GET['word'])){ $word = $_GET['word']; } else { $word = $_POST['word']; } $word = value_check($word); }
----------------------------------- yomi-searchのパラメーターは以下のようにしてください。
%keyword = ( 'updir',"mode=search&ys=1&word=$K_euc",
7 ZA (10/03/24 21:17)いつも早い対応に感謝します。思いどうりになりました。 ありがとうございました。 8 ZA (10/03/26 14:43)お世話になります。
Yomi-Searchの検索にメタサーチから検索すると、下記のように表示されていてうまく動作しています。
http://ドメイン/updir.php?mode=search&mode=search&ys=1&word=エンコード
<a href="http://ドメイン/updir.php?mode=search&mode=search&ys=1&word=$Slog[1]">検索</a>
すみません。Yomi-Searchのテンプレートに上記のように、word部分を$Slog[1]にすると文字化けして検索できません。
Yomi-Searchの検索にメタサーチを有効にしつつ、上記、検索リンクをできるようにするには、以下の部分をどのように変更すればよいでしょうか?
宜しくお願いします。
----------------------------------- //search if($mode == "search"){ if($_GET['ys'] == 1){ $word = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); } elseif(isset($_GET['word'])){ $word = $_GET['word']; } else { $word = $_POST['word']; } $word = value_check($word); }
----------------------------------- yomi-searchのパラメーター
%keyword = ( 'updir',"mode=search&ys=1&word=$K_euc",
9 webmaster (10/03/26 23:01)$Slog[1]に何が入っているかによりますが、 PHP側で文字コード変換がうまく変換出来ていないという事なら、 $word = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); の部分を、 $word = mb_convert_encoding($_GET['word'],'auto'); か $word = mb_convert_encoding($_GET['word'],"SJIS", 'EUC-JP,SJIS,UTF-8'); にすると変換できます。 文字列が短い場合は変換が失敗する場合もあります。 10 ZA (10/03/27 02:13)いつもありがとうございます。 以下で検索できるようになりました。 $word = mb_convert_encoding($_GET['word'],"SJIS","EUC_JP"); 11 ZA (10/03/27 02:14)$word = mb_convert_encoding($_GET['word'],"SJIS", 'EUC-JP,SJIS,UTF-8'); こちらでした。 12 ZA (10/03/28 14:04)度々すみません。 $Slog[1]の部分に「半角&」がある場合、「半角&」以降が検索ワードからでません。 全角&は大丈夫です。
例:$Slog[1]がアメリカ&ヨーロッパ 検索ワード結果、アメリカ だけになってしまします。 「半角&」を有効にすることはできますでしょうか?
宜しくお願いします。 13 webmaster (10/03/28 21:03)if($mode == "search"){
の下に次の2行を入れてください。
$var = explode("word=",urldecode($_SERVER["REQUEST_URI"])); $_GET['word'] = $var[1];
14 ZA (10/03/29 01:41)いつもありがとうございます。 半角&も検索できるようになりました。
15 ZA (10/03/29 02:10)返信の書く位置を間違えてしまいました。すみません。
度々、すみません。 カタカナの「ソ」「ー」が文字化けします。
シーソー → シーメ[ ソース → メ[ス ソーダ → メ[ダ
どのようにすればよいでしょうか? 宜しくお願いします。 16 webmaster (10/03/29 11:50)$_GET['word'] = $var[1];
の部分を次の内容と入れ替えてください。
$_GET['word'] = addslashes($var[1]);
17 ZA (10/03/29 14:43)ありがとうございました。 文字化けしないようになりました。 18 ZA (10/03/29 17:22)すみません。
今度は、20件以上結果がある状態で、「半角&」が次の20件→のページにいくと、&になり、検索結果がなくなってしまいます。
1ページ目、アメリカ&ヨーロッパ 検索結果正常。 2ページ目、アメリカ&ヨーロッパ 検索結果がなくなる。
ややこしくてすみません。宜しくお願い致します。 19 webmaster (10/03/29 19:58)//search の部分を次の内容と入れ替えてください。 ---------------------------------------------
//search if($mode == "search"){ if($_GET['ys'] == 1){ $var = explode("word=",urldecode($_SERVER["REQUEST_URI"])); $_GET['word'] = addslashes($var[1]); $word = mb_convert_encoding($_GET['word'],"SJIS", 'EUC-JP,SJIS,UTF-8'); } elseif(isset($_GET['word'])){ $word = $_GET['word']; } else { $word = $_POST['word']; } $word = value_check($word); $word = str_replace("&amp","&",$word); }
20 ZA (10/03/29 20:15)ありがとうございます。 思うようにできました。 21 ZA (10/03/31 14:06)すみません。 $Slog[1]の部分に「半角+」プラスがある場合、以下のプログラムエラーになります。 Warning: stristr() [function.stristr]: Empty delimiter in /xxx/xxxxxxxx/public_html/file/updir.php on line 563
例:+アメリカ 結果エラー 例:ヨーロッパ+ 結果エラー 例:アメリカ+ヨーロッパ 結果アメリカ ヨーロッパ 「半角+」がなくなる。
また、全角スペースと、半角スペースが混在する場合もプログラムエラーになります。
どのように修正すればよいでしょうか? どうか宜しくお願いいたします。 22 webmaster (10/03/31 18:32)以下の内容で更新してください。 ------------------------------------------ $var = explode("word=",urldecode($_SERVER["REQUEST_URI"]));
を次の内容と入れ替えてください。
$var = explode("word=",rawurldecode($_SERVER["REQUEST_URI"]));
------------------------------------------ 550行目辺り以下の部分があります。
foreach($word_list as $key => $aword){
この行の下に次の内容を挿入してください。
if($aword == ""){continue;}
23 ZA (10/03/31 23:08)いつも早い対応に感謝いたします。 できました。ありがとうございます。
24 Magdelina (16/08/06 10:17)Thanks for cogbtiturinn. It's helped me understand the issues.
|