Решил сделать поиск.
Раньше никогда не задумывался. Как гугл при подсветке искомого слова выводит часть строки которая рядом с этим словом?
То есть, есть статья с каким то текстом, но при поиске выводится искомое слово в контексте.
Вот к примеру подсвечивает слово и еще как то вытягивает часть статьи.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
И на хабре также
поисквот как так подсвечивается искомое слово и выводятся рядом стоящие слова?
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Цитата |
вот как так подсвечивается искомое слово и выводятся рядом стоящие слова? |
В тексте находят искомое слово и показываеют рядом стоящие слова.
В чем проблема вообще? Код за вас написть?
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. ©
AllesKlar
Arh$in = 'Искомое слово может быть любым';
$in = str_replace('слово', '<b>слово</b>', $in);
echo $in;
Цитата (Arh @ 30.10.2013 - 21:31) |
И на хабре также |
Игорь_Vasinsky
31.10.2013 - 09:37
Guest
ну что же вы.. юникод в моде
strtr() наше всё
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
HErATuB
31.10.2013 - 10:52
Я думаю что проще реализовать через preg_replace. Вот пример кода:
$search = array('preg_replace','кода');
$in = 'Я думаю что проще реализовать через preg_replace. Вот пример кода:';
$in = preg_replace('/('.implode('|',$search).')/', "<b>$1</b>", $in);
echo $in;
Цитата (Guest @ 31.10.2013 - 04:14) |
Arh <pre class="sh_sourceCode" rel="php"><span class="sh_variable">$in</span> <span class="sh_symbol">=</span> <span class="sh_string">'Искомое слово может быть любым'</span><span class="sh_symbol">;</span> <span class="sh_variable">$in</span> <span class="sh_symbol">=</span> <span class="sh_function">str_replace</span><span class="sh_symbol">(</span><span class="sh_string">'слово'</span><span class="sh_symbol">,</span> <span class="sh_string">'<b>слово</b>'</span><span class="sh_symbol">,</span> <span class="sh_variable">$in</span><span class="sh_symbol">);</span> <span class="sh_function">echo</span> <span class="sh_variable">$in</span><span class="sh_symbol">;</span></pre> |
Ну с подсветкой то понятно.
Все привели пример подсветки и вывода всего сообщения, но речь о том как вывести искомое слово и рядом стоящие слова.
Если поиск в огромной статье, не нужно выводить всю статью с подсвеченным словом, а только ... слово слово слово искомое слово слово слово ...
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Гугл спас) тема закрыта
function strchop($data,$word,$interval,$ci=true)
{
$position = $ci?mb_stripos($data,$word):mb_strpos($data,$word);
if(!$position) return false;
$start_position = $position - $interval;
$end_position = $position + mb_strlen($word) + $interval;
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, "<b>".$word."</b>", $kusok);
}
echo strchop('Я думаю что проще реализовать через preg_replace. Вот пример кода:','через',20);
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2