[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выделение результатов поиска(без учета регистра)
monday
Всем привет, помогите плиз. Не получается выделить результыта поиска.
Есть скрипт который ищет, но нужно чтобы он <b>выделял</b>(т.е как в яндексе или гугле вводим "Текст" - в результатах "<b>Текст</b>") текст который вводит пользователь в строке поиска и нужно чтобы без учета регистра работало, str_iraplece не пойдет т.к. стоит PHP 4.4
... = "/(".$search.")+/is"; и так пробовал - не помогло
вот скрипт...

PHP
//connect


if (!mysql_select_db($db)) die('Проверьте существование указанной базы данных'); 

echo 
"<form method='post'>";// 

echo "<input type='text' size=48 name='search' value='" . (isset($_POST['search'])?$_POST['search']:'') . "'>";// 

echo "<input type='hidden' name='submit' value='1'><input type='submit' value='Найти!'>";// 

// 

if (!empty($_POST['submit'])) {// 

$search = $_POST['search'];// 

$search=addslashes($search);//. 

$words = explode(" ", $search);// 

$sql = "SELECT * FROM $db_data[table] WHERE";// 

$i = 0;// 

foreach($db_data['search'] as $v) {// 

foreach($words as $v1) {// 

if ($i != 0)// 

$sql .= "OR";// 

$sql .= " $v LIKE '%$v1%' ";// 

$i++;


}
 



} 

if($result=mysql_query($sql))// 

{ 

if(mysql_num_rows($result)){// 

while($r=mysql_fetch_array($result)){// 



{
if (isset($_GET['id']))

$result=mysql_query("SELECT bb,cc FROM * WHERE `id`='".(int)$_GET['id']."'");

}


echo "<table>";

{

echo "
<br><a href='/www/index.php?id=$r[id]'>$r[bb]</a></br>


"
;
}
echo "</table>";

}


Всем заранее спасибо! smile.gif



Спустя 58 минут, 33 секунды (25.06.2009 - 10:18) Oyeme написал(а):
Цитата (monday @ 25.06.2009 - 06:19)
Есть скрипт который ищет, но нужно чтобы он <b>выделял</b> текст который вводит пользователь в строке поиска и нужно чтобы без учета регистра работало, str_iraplece не пойдет т.к. стоит PHP 4.4
... = "/(".$search.")+/is";  и так пробовал - не помогло
вот скрипт...

Не понел что тебе надо конретно.
1.Виделить текст который вводился в input?
- используй класс

PHP
echo "<input type='text' size=48 class=".isset($_POST['search']) ? 'active' : 'inactive'."  name='search' value='" . (isset($_POST['search'])?$_POST['search']:'') . "'>";//


Спустя 7 часов, 1 минута, 45 секунд (25.06.2009 - 17:19) Guest написал(а):
Цитата (Oyeme @ 25.06.2009 - 07:18)
Цитата (monday @ 25.06.2009 - 06:19)
Есть скрипт который ищет, но нужно чтобы он <b>выделял</b> текст который вводит пользователь в строке поиска и нужно чтобы без учета регистра работало, str_iraplece не пойдет т.к. стоит PHP 4.4
... = "/(".$search.")+/is";  и так пробовал - не помогло
вот скрипт...

Не понел что тебе надо конретно.
1.Виделить текст который вводился в input?
- используй класс

PHP
echo "<input type='text' size=48 class=".isset($_POST['search']) ? 'active' : 'inactive'."  name='search' value='" . (isset($_POST['search'])?$_POST['search']:'') . "'>";//

ну как-бы нужно чтобы результаты выводилиьс как например в яндексе или гугле выводятся... smile.gif т.е введем например в строку поиска "Текст" и нужно чтобы в результатах он выделелся - "<b>Текст</b>"

Спустя 6 дней, 17 часов, 3 минуты, 57 секунд (2.07.2009 - 10:23) monday написал(а):
ну подскажите плиз как сделать выделения результатов... очень надо smile.gif

Спустя 13 минут, 21 секунда (2.07.2009 - 10:37) twin написал(а):
Перевести в нижний регистр, узнать позицию вхождения и по ней в оригинальногм тексте выделить то что нужно.

Спустя 4 минуты, 48 секунд (2.07.2009 - 10:41) gooder отдыхающий написал(а):
рег выражения учи
должно работать что-то вроде preg_replace('#(' . $search . ')#is', '<b>$1</b>', $text);

Спустя 1 час, 27 минут, 10 секунд (2.07.2009 - 12:09) twin написал(а):
preg_replace маловато будет. smile.gif Так только одно слово можно искать.
Вот так надо, если уж на то пошло:
PHP
$content 'Вот тут будем искать слова Тут и там.';
$search 'Тут там';

$arr explode(" ",$search);

if(
preg_match_all('#('.implode('|'array_map('preg_quote'$arr)).')#iu'$content$outPREG_OFFSET_CAPTURE))

$result NULL;
$src 0;        
    foreach(
$out[0] as $value)  
    {              
        if(
$value[1] > $src)  
        
$result .= substr($content$src$value[1] - $src); 
             
        
$src $value[1] + mb_strlen($value[0]);  
        
$result .= '<b>'.$value[0].'</b>';  
    }
$result .= substr($content$src);                        
}    

echo 
$result;

Правда под utf-8 писал, ну не все же на блюдечке)

Спустя 17 часов, 47 минут, 21 секунда (3.07.2009 - 05:56) monday написал(а):
Цитата (twin @ 2.07.2009 - 09:09)
preg_replace маловато будет. smile.gif Так только одно слово можно искать.
Вот так надо, если уж на то пошло:
PHP
$content = 'Вот тут будем искать слова Тут и там.';
$search = 'Тут там';

$arr = explode(" ",$search);

if(
preg_match_all('#('.implode('|', array_map('preg_quote', $arr)).')#iu', $content, $out, PREG_OFFSET_CAPTURE))
{
 
$result 
= NULL;
$src = 0;        
    foreach
($out[0] as $value)  
    
{              
        if
($value[1] > $src)  
        $result 
.= substr($content, $src, $value[1] - $src); 
             
        $src 
= $value[1] + mb_strlen($value[0]);  
        $result 
.= '<b>'.$value[0].'</b>';  
    
}
$result .= substr($content, $src);                        
}    

echo $result
;

Правда под utf-8 писал, ну не все же на блюдечке)

Спасибо! smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.