Поиск слова в тексте (строке) на php и вывод части текста вокруг искомого слова20.03.2021 От: faq Из: Веб-строительство wilsden 31 октября 2020, 11:45 96Привет кодирам помогите плизТребуется вывести часть текста вокруг искомого слова, а не выводить весь текст из базы данных . Выглядит так: Нашел в сети этот код? то что надо! но не могу понять как внедрить его в страницу поиска 🙁/** * * @param string $data строка в которой ищем * @param string $word что ищем * @param integer $interval интервал символов до и символов после * @param bool $ci нечувствителен к регистру по умолчанию true * @return string|false результат, если false - нет вхождения */ function strchop($data,$word,$interval,$ci=true) { //if($ci){$position=stripos($data,$word);}else{$position = strpos($data,$word);}; $position = $ci?mb_stripos($data,$word):mb_strpos($data,$word); //ничего нет - вернули false if(!$position) return false; //Определяем стартовую позицию новой строки $start_position = $position - $interval; //От конца слова определили конечный интервал $end_position = $position + mb_strlen($word) + $interval; //Если стартовая позиция отрицательная делаем в 0 if($start_position < 0) $start_position = 0; //определяем длину новой строки $len = $end_position - $start_position; $length = (mb_strlen($data) > $len) ? mb_strripos(mb_substr($data, 0, $len), ' ') : $len; //вернули результат $kusok = '...'.mb_substr($data,$start_position,$length, 'UTF-8').'...'; return str_replace($word, "<span class="word">".$word."</span>", $kusok); }Код который выводит по заданному слову начало статьи из бд content<?php require_once('inc-main.php'); ?> <?php $time = microtime(); $time = explode(' ', $time); $time = $time[1] + $time[0]; $start = $time; if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } //Blocking too long queries if(strlen(@$_GET['q'])>50){ header("Location:".$_SERVER['HTTP_REFERER']); exit; } //Search if((@$_GET['q'])!=""){ mysql_select_db($database_saha, $saha); $query_Crawlsettings = "SELECT * FROM crawl_settings"; $Crawlsettings = mysql_query($query_Crawlsettings, $saha) or die(mysql_error()); $row_Crawlsettings = mysql_fetch_assoc($Crawlsettings); $totalRows_Crawlsettings = mysql_num_rows($Crawlsettings); $lim=$row_Crawlsettings['search_results_per_page']; if(@$_GET['stt']==""){ $stt=0; }else{ $stt=@$_GET['stt']; } if(isset($_GET['stt']) && is_numeric(@$_GET['stt'])!=1){ header("Location: index.php"); exit; } $cid=mysql_real_escape_string($_GET['q']); $stt=mysql_real_escape_string($stt); if(strstr($cid," ",true)!=""){ $resultQuerry=explode(" ",$cid); }else{ $resultQuerry=array($cid); } $resultQuerryImageResults=""; $resultQuerryResults=""; foreach($resultQuerry as $cids){ if($row_Crawlsettings['crawl_images_image_url']=="Y"){ $resultQuerryImageResults.="crawl_images.image_url LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_images_current_url']=="Y"){ $resultQuerryImageResults.="crawl_images.current_url LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_images_keywords']=="Y"){ $resultQuerryImageResults.="crawl_images.keywords LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_title']=="Y"){ $resultQuerryResults.="crawl.title LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_description']=="Y"){ $resultQuerryResults.="crawl.description LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_current_url']=="Y"){ $resultQuerryResults.="crawl.current_url LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_keywords']=="Y"){ $resultQuerryResults.="crawl.keywords LIKE '%$cids%' OR "; } if($row_Crawlsettings['crawl_content']=="Y"){ $resultQuerryResults.="crawl.content LIKE '%$cids%' OR "; } } if($resultQuerryImageResults!=""){ $resultQuerryImageResults=substr($resultQuerryImageResults,0,-4); mysql_select_db($database_saha, $saha); $query_imagesFound = "SELECT * FROM crawl_images WHERE crawl_images.deleted='N' AND ($resultQuerryImageResults) LIMIT 5"; $imagesFound = mysql_query($query_imagesFound, $saha) or die(mysql_error()); $row_imagesFound = mysql_fetch_assoc($imagesFound); $totalRows_imagesFound = mysql_num_rows($imagesFound); mysql_select_db($database_saha, $saha); $query_imagesFoundTotal = "SELECT * FROM crawl_images WHERE crawl_images.deleted='N' AND ($resultQuerryImageResults)"; $imagesFoundTotal = mysql_query($query_imagesFoundTotal, $saha) or die(mysql_error()); $row_imagesFoundTotal = mysql_fetch_assoc($imagesFoundTotal); $totalRows_imagesFoundTotal = mysql_num_rows($imagesFoundTotal); } if($resultQuerryResults!=""){ $resultQuerryResults=substr($resultQuerryResults,0,-4); mysql_select_db($database_saha, $saha); $query_total = "SELECT * FROM crawl WHERE crawl.deleted='N' AND ($resultQuerryResults)"; $total = mysql_query($query_total, $saha) or die(mysql_error()); $row_total = mysql_fetch_assoc($total); $totalRows_total = mysql_num_rows($total); mysql_select_db($database_saha, $saha); $query_searchResults = "SELECT * FROM crawl WHERE crawl.deleted='N' AND ($resultQuerryResults) LIMIT $stt,$lim"; $searchResults = mysql_query($query_searchResults, $saha) or die(mysql_error()); $row_searchResults = mysql_fetch_assoc($searchResults); $totalRows_searchResults = mysql_num_rows($searchResults); } //Writing Log if(@$_GET['stt']==""){ $keyword=strtolower($cid); mysql_select_db($database_saha, $saha); $query_selectedCrawl1 = "SELECT * FROM log WHERE log.keyword='$keyword'"; $selectedCrawl1 = mysql_query($query_selectedCrawl1, $saha) or die(mysql_error()); $row_selectedCrawl1 = mysql_fetch_assoc($selectedCrawl1); $totalRows_selectedCrawl1 = mysql_num_rows($selectedCrawl1); if(@$totalRows_total>0){ $insertSQL = sprintf("INSERT INTO log (count, ip, results, date, keyword, time) VALUES (%s, %s, %s, %s, %s, %s)", GetSQLValueString($totalRows_selectedCrawl1+1, "int"), GetSQLValueString($_SERVER['REMOTE_ADDR'], "text"), GetSQLValueString($totalRows_total, "int"), GetSQLValueString(date("Y-m-d"), "date"), GetSQLValueString(strtolower($cid), "text"), GetSQLValueString(date("H:i:s"), "date")); mysql_select_db($database_saha, $saha); $Result1 = mysql_query($insertSQL, $saha) or die(mysql_error()); } } //End Writing Log } $time = microtime(); $time = explode(' ', $time); $time = $time[1] + $time[0]; $finish = $time; $total_time = round(($finish - $start), 4); function searchedSample($database_saha, $saha,$searcTerm,$queryID){ mb_http_input("utf-8"); mb_http_output("utf-8"); $searcTerm=mysql_real_escape_string($searcTerm); $queryID=mysql_real_escape_string($queryID); mysql_select_db($database_saha, $saha); $query_searchResultsSample = "SELECT * FROM crawl WHERE crawl.id='$queryID' AND crawl.deleted='N' AND (crawl.title LIKE '%$searcTerm%' OR crawl.description LIKE '%$searcTerm%' OR crawl.current_url LIKE '%$searcTerm%' OR crawl.keywords LIKE '%$searcTerm%' OR crawl.content LIKE '%$searcTerm%')"; $searchResultsSample = mysql_query($query_searchResultsSample, $saha) or die(mysql_error()); $row_searchResultsSample = mysql_fetch_assoc($searchResultsSample); $totalRows_searchResultsSample = mysql_num_rows($searchResultsSample); $content=NULL; $contentArray=explode(" ",$row_searchResultsSample['content']); $fileCount=0; if(is_array($contentArray)){ foreach ($contentArray as $key) { $fileCount++; if($fileCount<32){ $LowerStr=strtoupper($key); $LowersearcTerm=strtoupper($searcTerm); if(strpos($LowerStr,$LowersearcTerm)!== false){ $keyWard="<strong style=" text-decoration:underline;">$key</strong>"; }else{ $keyWard=$key; } $content.=$keyWard." "; } } } return $content; } ?>Помогите пожалуйста Dreammaker 1 ноября 2020, 17:11> Нашел в сети этот код? то что надо! но не могу понять как внедрить его в страницу поиска 🙁Код устарел лет, как минимум, на 5, и будет работать только на php5 и тот под вопросом. Похожие записи:Программа для записи санации объекта Газетное приложение Codeigniter 3 Помогите исправить ошибку «Cannot modify header information — headers already sent by» Выгрузить картинку с ali как за свою? поиск в базе данных и вывод на сайте через php
wilsden
Привет кодирам помогите плиз
Требуется вывести часть текста вокруг искомого слова, а не выводить весь текст из базы данных .
Выглядит так:
Нашел в сети этот код? то что надо! но не могу понять как внедрить его в страницу поиска 🙁
Код который выводит по заданному слову начало статьи из бд content
Помогите пожалуйста
Dreammaker
> Нашел в сети этот код? то что надо! но не могу понять как внедрить его в страницу поиска 🙁
Код устарел лет, как минимум, на 5, и будет работать только на php5 и тот под вопросом.