|
|
|
| Скрипт выдаёт ошибку:
Warning: eregi_replace(): REG_EPAREN in z:\home\test.ru\glossary.php on line 182
|
вот привожу эту строку:
<?php
$text = eregi_replace(">([^<]*)($text)", ">\\1<font color=#cc0000 style='background-color: yellow'>\\2</font>", $text);
?>
|
Вот нашел описание этой ошибки:
REG_EPAREN - незакрытая скобка в операторе группировки
Помогите избавиться от ошибки, сам не могу понять, что нужно исправить | |
|
|
|
|
|
|
|
для: sirop
(31.12.2006 в 03:22)
| | А что в переменной $text? | |
|
|
|
|
|
|
|
для: Евгений Петров
(31.12.2006 в 03:32)
| | Сценарий работы скрипта такой:
После выборки текста из базы данных (MySql) нужно искомый текст выделить подсветкой, но выбраный из базы текст может содержать html-тэги. Я вырезаю эти тэги и подсвечиавю искомые слова. За основу был взят движок текущего форума (который выложен для скачивания) и статья http://phpclub.ru/detail/article/mysql_search
Вот кусок моего варианта:
<?php
$search = $_GET['word'];
$search = trim($search);
$search = substr($search, 0, 64);
//выжжем все "ненормальные" символы
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
//разрешим искать только по словам, которые длиннее 4 букв
$good = trim(preg_replace("/\s(\S{1,4})\s/", " ", eregi_replace(" +", " "," $search ")));
//надо сжать двойные пробелы
$good = eregi_replace(" +", " ", $good);
//Выбираем из базы текст
$query = "SELECT * FROM glossary WHERE MATCH(word,body) AGAINST ('*$good*' IN BOOLEAN MODE)";
$res=mysql_query($query);
while($list = mysql_fetch_array($res))
{
$highlight = str_replace(" ", "|", $good);
$text = eregi_replace($highlight, "<strong><font color=#cc0000 style='background-color: yellow'>\\0</font></strong>", $list['word']);
$text = eregi_replace(">([^<]*)($text)", ">\\1<font color=#cc0000 style='background-color: yellow'>\\2</font>", $text);
$text2 = eregi_replace($highlight, "<strong><font color=#cc0000 style='background-color: yellow'>\\0</font></strong>", $list['body']);
$text2 = eregi_replace(">([^<]*)($text2)", ">\\1<font color=#cc0000 style='background-color: yellow'>\\2</font>", $text2);
$out_two_text .= "<p align=\"justify\"><acronym title=\"".$text."\"><b>".$text."</b></acronym> — ".$text2."</p>";
}
if($text == '' OR $text2 == '') echo "<p>К сожалению, по Вашему запросу ( <b><i>".$search."</i></b> ) ничего не найдено.<br>Попробуйте изменить условия поиска.</p>";
?>
|
В таблице всего 3 поля: id, word, body (последние 2 - fulltext) | |
|
|
|
|
|
|
|
для: sirop
(31.12.2006 в 14:29)
| | Ещё раз пересмотрел скрипт и никак не могу разобраться. Интересно то, что ошибку выдаёт не всегда, я никак не могу найти закономерность в ней | |
|
|
|
|
|
|
|
для: sirop
(31.12.2006 в 03:22)
| | Может я неправильно вырезаю теги?
Кто-нибудь что-то подскажет? | |
|
|
|