複数キーワード
このコミットが含まれているのは:
コミット
f5f861858c
|
@ -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,
|
||||
|
|
新しいイシューから参照