monday
25.06.2009 - 10:19
Всем привет, помогите плиз. Не получается выделить результыта поиска.
Есть скрипт который ищет, но нужно чтобы он <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>";
} |
Всем заранее спасибо!
Спустя 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']:'') . "'>";// |
|
ну как-бы нужно чтобы результаты выводилиьс как например в яндексе или гугле выводятся...
т.е введем например в строку поиска "Текст" и нужно чтобы в результатах он выделелся - "<b>Текст</b>"
Спустя 6 дней, 17 часов, 3 минуты, 57 секунд (2.07.2009 - 10:23) monday написал(а):
ну подскажите плиз как сделать выделения результатов... очень надо
Спустя 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 маловато будет.
Так только одно слово можно искать.
Вот так надо, если уж на то пошло:
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 писал, ну не все же на блюдечке)
Спустя 17 часов, 47 минут, 21 секунда (3.07.2009 - 05:56) monday написал(а):
Цитата (twin @ 2.07.2009 - 09:09) |
preg_replace маловато будет. Так только одно слово можно искать. Вот так надо, если уж на то пошло:
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 писал, ну не все же на блюдечке)
|
Спасибо!