複数キーワード

このコミットが含まれているのは:
守矢諏訪子 2022-06-04 05:41:29 +09:00
コミット f5f861858c
2個のファイルの変更20行の追加15行の削除

ファイルの表示

@ -41,7 +41,7 @@ sudo pacman -S nginx php php-fpm mariadb curl whois tor torsocks pandoc
- [x] ウエブサイトの追加
- [ ] ウエブサイトの追加は複数レベル化
- [ ] 検索オンラインについて
- [ ] 複数キーワード
- [x] 複数キーワード
### 1.1
- [ ] "my ip"

ファイルの表示

@ -22,36 +22,41 @@
exit();
}
$q = mysqli_real_escape_string($mysqli, $q);
$tq = explode(' ', $q);
$lq = '';
foreach ($tq as $k => $v) {
if ($k % 2 == 0) $lq .= "%$v%";
else $lq .= "$v%";
$lq .= "title LIKE '%$v%' OR body LIKE '%$v%'";
if ($k != array_key_last($tq)) $lq .= " OR ";
}
unset($tq);
$tp = mysqli_query($mysqli, "SELECT COUNT(1) FROM website_page WHERE title LIKE '".$lq."' OR body LIKE '".$lq."';");
$tp = mysqli_query($mysqli, "SELECT COUNT(1) FROM website_page WHERE $lq;");
$totalpages = (int)mysqli_fetch_row($tp)[0];
unset($tp);
if ($pages = mysqli_prepare($mysqli, "SELECT * FROM website_page WHERE title LIKE ? OR body LIKE ? LIMIT ? OFFSET ?")) {
mysqli_stmt_bind_param($pages, "ssii", $lq, $lq, $limit, $offset);
if ($pages = mysqli_prepare($mysqli, "SELECT * FROM website_page WHERE $lq LIMIT ? OFFSET ?")) {
mysqli_stmt_bind_param($pages, "ii", $limit, $offset);
mysqli_stmt_execute($pages);
mysqli_stmt_bind_result($pages, $wpid, $webid, $pageurl, $pagetit, $pagebody);
mysqli_execute($pages);
while (mysqli_stmt_fetch($pages)) {
$cq = strtoupper($q);
$pagetit = preg_replace('/'.$cq.'/i', '<span class="result-mark">'.$cq.'</span>', $pagetit);
$pagebody = explode($cq, $pagebody);
$tmppb = '';
$cq = preg_split('/(\ |\+)/i', $q);
$cpreg = '(';
foreach ($cq as $k => $v) {
$cpreg .= $v;
if ($k != array_key_last($cq)) $cpreg .= '|';
}
$cpreg .= ')';
$tmpbody = '';
foreach ($pagebody as $k => $v) {
if ($k % 2 == 0) $tmppb .= '…'.mb_substr($pagebody[$k], -200).'<span class="result-mark">'.$cq.'</span>';
else $tmppb .= mb_substr($pagebody[$k], 0, 200).'…'.(isset($pagebody[$k+1]) ? ' ' : '');
foreach ($cq as $k => $v) {
$tmpbody .= '…'.mb_substr(mb_stristr($pagebody, $v, true), -120);
$tmpbody .= mb_substr($pagebody, mb_stripos($pagebody, $v), 120).'… ';
}
$pagebody = $tmppb;
$pagebody = preg_replace('/'.$cpreg.'/i', '<span class="result-mark">$1</span>', $tmpbody);
$pagetit = preg_replace('/'.$cpreg.'/i', '<span class="result-mark">$1</span>', $pagetit);
$res[] = [
'url' => $pageurl,