![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
kasmanaft |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Нет, чуть-чуть не так
![]() Вот.
И вот
UPD ну что ты будешь делать, опять "вопрос" куда-то пропал ![]() Скопируйте заново (я обновил) Это сообщение отредактировал(а) kasmanaft - 19.11.2007, 19:20 |
||||
|
|||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
обновила, спасибо!!!
Только с кавычками в кавычках та же история ![]() Добавлено через 11 минут странно, еще почему-то у некоторых слов первая или последняя буква отрезается...:( |
|||
|
||||
kasmanaft |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Ну как же так же, я с ума сейчас сойду
![]() ![]() ![]() А что Вы ищете? Может быть, неправильно оформлена строка? Кавычки должны окружать слово (словосочетание), без пробелов. ("текст "текст" текст", а не "текст"текст"текст" или "текст " текст " текст ").
Добавлено через 6 минут и 51 секунду Ага, похоже до меня наконец-таки дошло. Попробуйте после первого preg_match_all() вставить $search = preg_replace($reg, "", $search); То есть
|
||||
|
|||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
изменила, ввожу вот так: "Закон Республики Беларусь "О научно-технической информации""
не то ищет... вот как разбивает: LIKE "%Закон Республики Беларусь %" OR LIKE "%%" OR LIKE "%О%" OR LIKE "%научно-технической%" OR LIKE "%информации%") до последних изменений разбивал так: LIKE "%Закон Республики Беларусь %" OR LIKE "%%" OR LIKE "%Закон%" OR LIKE "%Республики%" OR LIKE "%Беларусь%" OR LIKE "%О%" OR LIKE "%научно-технической%" OR LIKE "%информации%") |
|||
|
||||
kasmanaft |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Странно.. у меня вот как разбивает:
Если "кавычки в кавычках" : LIKE "%Закон Республики Беларусь \"О научно-технической информации%") ) И без кавычек: LIKE "%О научно-технической информации%" OR LIKE "%Закон%" OR LIKE "%Республики%" OR LIKE "%Беларусь%") ) ![]() Прикреплю на всякий случай код:
|
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
я поняла, у меня подставляется вот так:
\"Закон Республики Беларусь \"О научно-технической информации\"\", ибо экранирование есть... А можно без экранирования в запрос подставлять? Это безопасно? |
|||
|
||||
kasmanaft |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Нет, конечно, не безопасно.
Но ведь $word = trim($word, '"\\') должен отрезать эти экранированные кавычки.. Вы его заменили? PS выложил код, забыл кой-чего исправить: $word = addslashes($word); - вместо него у Вас должен быть $word = mysql_real_escape_string($word); (с mysql_real_escape_string не работало у меня, т.к. нет соединения с БД) PSPS ну блин ![]() Вообще полученный текст сразу же нужно очищать от работы этих магических кавычек вот такой конструпцией:
А после этого с $search уже можно работать... Это сообщение отредактировал(а) kasmanaft - 20.11.2007, 12:21 |
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
у меня приходит значение из формы, и обрабатывается перед подстановкой в нашу функцию так:
вот....это правильно? этого достаточно? Добавлено через 6 минут и 34 секунды кажется я поняла, мне надо перед функцией убрать $search=mysql_real_escape_string($search); так как в функции уже есть $word = mysql_real_escape_string($word); и поэтому происходит двойное экранирование, так? ![]() |
|||
|
||||
kasmanaft |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Точно!
![]() Однако вот это лишнее...
Это сообщение отредактировал(а) kasmanaft - 20.11.2007, 12:38 |
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
ОГРОМНЕЙШЕЕ спасибо!!!!
![]() ![]() |
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
а почему лишнее?
|
|||
|
||||
kasmanaft |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
1) знаки препинания - потому что на них функция не станет обращать внимания, т.е. они не помешают. А, если удалить, скажем, запятую, находящуюся в кавычках - ничего не найдется.
2) Замена нескольких пробелов на один - аналогично знакам препинания... 3) Удаление лишних пробелов по-левому и правому боку текста - тоже незачем.. 4) чтобы _ и % соответствовали точно самим себе - эта же функция применяется внутри prepareWhere.. Если два раза экранировать, получится, что экранируется "\", а _% останутся нетронутыми. PS наконец-то мы её победили ![]() |
|||
|
||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
не, не мы, а Вы
![]() ![]() Добавлено через 6 минут и 25 секунд вот еще вылезло: если в поисковую строку просто ввести какой-нибудь из символов: . \ , " № ; @ # & ну и так далее, то Notice: Undefined variable: where in F:\Program Files\wamp\www\reestr_skript18\search.php on line 151 Добавлено через 12 минут и 4 секунды что с этим делать? |
|||
|
||||
kasmanaft |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 16.11.2007 Репутация: 1 Всего: 2 |
Так-так-таак..
Можно попробовать
PS а что раньше было, если передать в функцию пустую строку? Если все нормально было, то должно сработать.. |
||||
|
|||||
Splendid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
раньше с пустой строкой была проверка:
Сейчас с пустой нормально, а вот с этими символами: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\Program Files\wamp\www\reestr_skript18\search.php on line 173 т.е. $where нету, следовательно запрос неправильный.... значит теперь нужно ввести проверку типа if ($where == '') {echo '</br>'; echo " <center><br> То чего-то там. </br></center>"; } ???? Добавлено через 1 минуту и 37 секунд т.е. теперь пользователь может вводить только русские и англ. буквы и цифры...так? Добавлено через 2 минуты и 40 секунд а почему? регулярные выражения не воспринимают \ , " № ; @ # & и так далее?? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |