Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: REG_EPAREN
 
 автор: sirop   (31.12.2006 в 03:22)   письмо автору
 
 

Скрипт выдаёт ошибку:

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 - незакрытая скобка в операторе группировки
Помогите избавиться от ошибки, сам не могу понять, что нужно исправить

   
 
 автор: Евгений Петров   (31.12.2006 в 03:32)   письмо автору
 
   для: sirop   (31.12.2006 в 03:22)
 

А что в переменной $text?

   
 
 автор: sirop   (31.12.2006 в 14:29)   письмо автору
 
   для: Евгений Петров   (31.12.2006 в 03:32)
 

Сценарий работы скрипта такой:
После выборки текста из базы данных (MySql) нужно искомый текст выделить подсветкой, но выбраный из базы текст может содержать html-тэги. Я вырезаю эти тэги и подсвечиавю искомые слова. За основу был взят движок текущего форума (который выложен для скачивания) и статья http://phpclub.ru/detail/article/mysql_search
Вот кусок моего варианта:

<?php
$search 
$_GET['word'];
$search trim($search);
$search substr($search064);
//выжжем все "ненормальные" символы
$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> &mdash; ".$text2."</p>";
    }
    if(
$text == '' OR $text2 == '') echo "<p>К сожалению, по Вашему запросу ( <b><i>".$search."</i></b> ) ничего не найдено.<br>Попробуйте изменить условия поиска.</p>";
?>

В таблице всего 3 поля: id, word, body (последние 2 - fulltext)

   
 
 автор: sirop   (01.01.2007 в 21:10)   письмо автору
 
   для: sirop   (31.12.2006 в 14:29)
 

Ещё раз пересмотрел скрипт и никак не могу разобраться. Интересно то, что ошибку выдаёт не всегда, я никак не могу найти закономерность в ней

   
 
 автор: sirop   (03.01.2007 в 00:07)   письмо автору
 
   для: sirop   (31.12.2006 в 03:22)
 

Может я неправильно вырезаю теги?
Кто-нибудь что-то подскажет?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования