Подсветка слов в поиске

Eugeniy

Новичок
Подсветка слов в поиске

Подскажите как выделить (подсветка) в тексте слова по которым производился поиск?
 

Vladimirovich

Guest
Re: Подсветка слов в поиске

Автор оригинала: Eugeniy
Подскажите как выделить (подсветка) в тексте слова по которым производился поиск?
PHP:
str_replace(array('word1', 'word2'), array('<b>word1</b>', '<b>word2</b>'), $found)
?
 

Eugeniy

Новичок
Re: Re: Подсветка слов в поиске

А как эту замену сделать независимой от регистра?
 

Vladimirovich

Guest
Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Eugeniy
А как эту замену сделать независимой от регистра?
preg_replace('/(word1|word2)/i', '<b>\1</b>', $found);
 

Eugeniy

Новичок
Re: Re: Re: Re: Подсветка слов в поиске

У меня есть переменная $searchword в которой искомые слова через пробел.

Ну допустим ищем одно слово, тогда так:
PHP:
$text = str_replace ($searchwords, "<b>$searchwords</b>", $text);
Вот так работает, но зависит от регистра.

А если делать нечуствительным к регистру, т.е. используем /i то как писать используя переменную $searchwords ?

Просто я пробовал так:
PHP:
$text = str_replace ('/($searchwords)/i', "<font color=green><b>$searchwords</b></font>", $text);
и по другому........ не получается....
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Eugeniy
У меня есть переменная $searchword в которой искомые слова через пробел.
Ну дык сделай сначала
$searchword = str_replace(' ', '|', $searchword);

Просто я пробовал так:
PHP:
$text = str_replace ('/($searchwords)/i', &quot;&lt;font color=green&gt;&lt;b&gt;$searchwords&lt;/b&gt;&lt;/font&gt;&quot;, $text);
и по другому........ не получается....
preg_replace('/($searchword)/i', '<font color="green"><b>\1</b></font>', $found);
 

Eugeniy

Новичок
Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Vladimirovich


Ну дык сделай сначала
$searchword = str_replace(' ', '|', $searchword);



preg_replace('/($searchword)/i', '&lt;font color=&quot;green&quot;&gt;&lt;b&gt;\1&lt;/b&gt;&lt;/font&gt;', $found);
Сделал так:
PHP:
$searchword = "(". str_replace(" ", "|", $searchwords). ")";
$text = preg_replace('/($searchword)/i', '<font color="green"><b>/1</b></font>', $text);
Ваобще ничего не заменяет, ни одно слово, ни несколько слов...
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Eugeniy
Ваобще ничего не заменяет, ни одно слово, ни несколько слов...
возьми свой вариант и мой. сравни. повторить до полного самоудовлетворения 2 раза.
копи-пасте знаешь что такое?
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Vladimirovich


возьми свой вариант и мой. сравни. повторить до полного самоудовлетворения 2 раза.
копи-пасте знаешь что такое?

PHP:
<?
$found = 'it is the dummy text';
$searchword = 'is text';

$searchword = str_replace(' ', '|', $searchword);
echo preg_replace("/($searchword)/i", '<font color="green"><b>\1</b></font>', $found);
?>
резултат:
it <font color="green"><b>is</b></font> the dummy <font color="green"><b>text</b></font>
 

mvc_aaa

MvC of PHPClub
Re: Re: Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

А косячек то у тебя был с кавычечками :)
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: mvc_aaa
А косячек то у тебя был с кавычечками :)
угу, потому и не поленился все проверить и запостил заведомо рабочий код... ;)

бывает...
 

Eugeniy

Новичок
Re: Re: Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Vladimirovich



PHP:
<? 
$found = 'it is the dummy text'; 
$searchword = 'is text'; 

$searchword = str_replace(' ', '|', $searchword); 
echo preg_replace("/($searchword)/i", '<font color="green"><b>1</b></font>', $found); 
?>
резултат:
it <font color="green"><b>is</b></font> the dummy <font color="green"><b>text</b></font>
Сделал так как написано, и заменил он мне все слова на еденицы :D
Но я поставил слеш перед еденицей и все заработало!!!!!!! :cool: :cool: :cool:

Vladimirovich!!!! Спасибо большое!!!!!!!!!!!
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Подсветка слов в поиске

Автор оригинала: Vladimirovich


угу, потому и не поленился все проверить и запостил заведомо рабочий код... ;)

бывает...
а гадский форум все равно слешик убрал =(
 

as33

Guest
Пробовал этот пример с русским текстом:
Хорошо отрабатывает только на Винде (Apache+PHP4), а на Линухе глючит (зависит от регистра). Где грабли?
 

Сенсей

Новичок
Я вот сделал как вы написали ...

PHP:
<?php
$mypage['text'] = "it is the dummy text";
if (isset($_GET['search']) AND $_GET['search'] != "") {
	$searchword = str_replace(' ', '|', $_GET['search']);
	$text = preg_replace("/($searchword)/i", '<font color="green"><b>\1</b></font>', $mypage['text']);
	echo $text;
} else {
	echo $mypage['text'];
}
?>
Все пашет ... Но если кто то подставит в $_GET['search'] скобку ... то есть если например будет :

$_GET['search'] = ")";

то php выдает :

Warning: Compilation failed: unmatched parentheses at offset 2 in z:\home\spaiz-lite\www\test.php on line 6


Как победить ? И опаcно ли ?
 

Winer

Мимо проходил
Quote regular expression characters (PHP 3>= 3.0.9, PHP 4 )
string preg_quote ( string str [, string delimiter] )

некромантия блин :)
 

Сенсей

Новичок
сенкс , разобрался :) но есть другая трабла теперь :(

PHP:
<?php

$mypage['text'] = "подсветить этот текст";
if (isset($_GET['search']) AND $_GET['search'] != "") {
	$keywords = preg_quote($_GET['search'], "/");
	$searchword = str_replace(' ', '|', $keywords);
	$text = preg_replace("/($searchword)/i", '<font color="green"><b>\1</b></font>', $mypage['text']);
	echo $text;
} else {
	echo $mypage['text'];
}

?>
с английскими словами все ok , но вот если

$_GET['search'] = "текст";

не пашет уже подсветка :(

чувствую что что то нужно делать с кодировкой или что то в этом роде ... а вот что :confused:
 

korvin0

моська
Сенсей
Глянь в мануале функцию setlocale (тебе уже говорили).
Но у меня вопрос возник в связи с локалями: как мне поставить, например, русскую локаль? Где-то я читал, что локаль (и ее название) зависят от оси, ее настроек и т.д. Что же, получается, если я написал скрипт, который правильно пашет под одним хостером, это еще не значит, что он будет работать под другим? И все из-за локали? Объясните, если не сложно!
 
Сверху