[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование регулярных выражений
Фибер Оптик
Здравствуйте!
На сайте я использую регулярные выражение "eregi_replace". На локалке всё замечательно работает, но вот при переносе на сервер - работать отказывается. Как будто их и нет вообще. В тех.поддержке мне сказали,что скорее всего в .htaccess надо прописать директиву включения регулярных выражений. А какая директива, я не знаю. Подскажите, плиз.
Спасибо.



Спустя 1 час, 3 минуты, 17 секунд (5.06.2009 - 13:02) glock18 написал(а):
Впервые слышу про такую директиву0_о Особенно настораживает "скорее всего". Думаю, что они заблуждаются. Может меня кто-нибудь поправит?

Спустя 1 час, 22 минуты, 57 секунд (5.06.2009 - 14:25) Фибер Оптик написал(а):
А может надо чего включить в php.ini ?

Спустя 33 минуты, 55 секунд (5.06.2009 - 14:59) glock18 написал(а):
Никогда ничего не подключал. Давай сюда регулярное выражение. Скорее всего у тебя синтаксис неправильный. твой локальный интерпретатор может сам исправить ошибку или просто интерпретировать ее правильно, а на серваке нет. так что давай выражение в студию smile.gif

Спустя 34 минуты, 12 секунд (5.06.2009 - 15:33) Фибер Оптик написал(а):
Да там ничего серьёзного нет....

PHP
$title ucfirst(strtolower($search));
$zamena '<span style="background-color:#FFD708">'.$title.'</span>';
$title eregi_replace ($title$zamena$myrow['title']);


ну а потом вывод $title.

Спустя 40 минут, 38 секунд (5.06.2009 - 16:14) glock18 написал(а):
Ты видишь

PHP
$title ucfirst(strtolower($search));
$zamena '<span style="background-color:#FFD708">'.$title.'</span>';
$title eregi_replace ($title$zamena$myrow['title']);


здесь регулярное выражение?

Лично я вижу полный бред:
1. $search (можно предположить, что переменная приходит от пользователя).
2. совмещение ucfirst, strtolower с eregI_replace - абсолютно бессмысленная трата процессорного время.
3. Если $search приходит от пользователя... неужели у твоего сайта такие умные пользователи, что они знаю формат паттернов для регулярных выражений? blink.gif

Давай, так. Сформулируй что ты хочешь сделать в этом скрипте вообще, а так же кинь сюда весь скрипт. Потом разберемся с тобой что не так.

Спустя 8 минут, 1 секунда (5.06.2009 - 16:22) Гость_hara написал(а):
glock18, ну да искать то без разницы какой регистр, но вот может при замене хочется поправить если что там не так)) то есть есть смысл всё же в ucfirst и strtolower

Фибер Оптик
локаль установлена?
язык то какой?
то есть в title в итоге, какой текст?

Спустя 8 минут, 21 секунда (5.06.2009 - 16:30) glock18 написал(а):
Цитата
при замене хочется поправить если что там не так

да, пожалуй)) не подумал.

Спустя 11 минут, 52 секунды (5.06.2009 - 16:42) Фибер Оптик написал(а):
Я делаю очень простой поиск по БД с подсветкой поискового слова.
То,что нашли сравнивается с запросом, и если есть совпадения найденного с запросом, просто добавляется background-color к совпадению. Но в результате надо,чтоб первая буква совпадения была заглавная, поэтому использую ucfirst.

PHP
<h3>ПОИСК</h3>
    <p>Поиск по: <strong><? echo $_POST['poisk'] ?></strong></p>
    <?
$search 
= $_POST['poisk'];
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
$result = mysql_query("SELECT `title`, `cat`, `id` FROM `catalog` WHERE `title` LIKE '%$search%'",$db);
$myrow = mysql_fetch_array($result);

if (mysql_num_rows($result) > 0)
{
echo '<p>Найдено '.mysql_num_rows($result). ' совпадений <br></p>';
do
{
$title = ucfirst(strtolower($search));
$zamena = '<span style="background-color:#FFD708">'.$title.'</span>';
$title = eregi_replace ($title, $zamena, $myrow['title']);
echo '
<table width="100%" border="0" id="catalog" cellpadding="0" cellspacing="3">
<tr><td valign="top">
<div class="name"><a href="catalog.php?'
.$link.'&tov='.$myrow['id'].'">'.$title.'</a></div></td></tr></table>';
}
while ($myrow = mysql_fetch_array($result));
}

Спустя 1 час, 10 минут, 34 секунды (5.06.2009 - 17:52) glock18 написал(а):
str_replace вместо eregi_replace. Первым параметром ereg функций должен быть паттерн, а ты даешь строку введенную пользователем. Это как минимум будет дольше работать, и более того даст неверную "подсветку" при поиске, например, "." или ".+". В общем то вариантов когда будет подсвечено не то достаточно много.

Они по большей части чисто гипотетические если говорить о поиске, но все же.

В общем, str_replace тебе в помощь.

Спустя 42 минуты, 2 секунды (5.06.2009 - 18:34) Гость_hara написал(а):
Фибер Оптик, язык поиска русский значит.
отсюда вопрос работает ли с английским? (был вопрос и про локаль)

а вообще то да уже не актуально, делай str_replace, и непонятно зачем делать с большой буквы... может это будет только часть слова

что будет если в поисковой фразе будет знак процента или например подчёркивание...

Спустя 3 часа, 1 минута, 18 секунд (5.06.2009 - 21:36) Фибер Оптик написал(а):
Цитата
и более того даст неверную "подсветку" при поиске, например, "." или ".+

Я об этом не подумал. Но дело в том,что там пользователи не будет вводить такое. Сайт посвещён автоинструменту.
Цитата
отсюда вопрос работает ли с английским?

Как я говорил,поиск ищет совпадения с содержимым таблицы БД, если там есть английские слова и пользователь введёт английское слово,то при совпадении всё сработает.
Цитата
и непонятно зачем делать с большой буквы... может это будет только часть слова

Допустим, я ввожу слово с маленькой буквы, например "ключ". По БД ищется слово "ключ" и как я понимаю проге пофиг,в каком регистре это слово будет в БД. Всё равно оно выведится. Но если это слово стоит вначале и с большой буквы,а после замены без учёта ucfirst (введёное слово заменяет совпадение $title = eregi_replace ($title, $zamena, $myrow['title'])wink.gif слово "ключ" становится с маленькой буквы написано,а мне надо сделать так,как было в БД.
Сейчас реализовано действие,когда маленькая буква заменяется большой (с помощью ucfirst).Но опять же,если это слово находится в середине,то оно выводится с большой буквы.Этого быть не должно. Я затрудняюсь реализовать правильное действие. Может что-нить подскажете?

Спустя 9 часов, 36 минут, 49 секунд (6.06.2009 - 07:13) glock18 написал(а):
Внимательнее читай. Заметил все, кроме сути совета:

Цитата
В общем, str_replace тебе в помощь.
Быстрый ответ:

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