Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Как применить строковые функции к слову на иврите?

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Пипл, помогите, приз. Я в полном отчаянье! Уже пол дня бьюсь головой о стену.  
Вот это работает:

Код:
 
$SQL1 = "
        SELECT pto.* , photogr.id_imageaccess  
        FROM tbl_photos AS `pto` , tbl_photographers as `photogr`  
        WHERE pto.keywords LIKE '%ל\"ג%'  
        AND pto.photographer_id = photogr.photographer_id  
        AND pto.status = 1 ORDER BY pto.rating DESC
        ";
 

А вот это нет:

Код:
 
$SQL1 = "
        SELECT pto.* , photogr.id_imageaccess  
        FROM tbl_photos AS `pto` , tbl_photographers as `photogr`  
        WHERE pto.keywords LIKE '%ל"ג %'  
        AND pto.photographer_id = photogr.photographer_id  
        AND pto.status = 1 ORDER BY pto.rating DESC
        ";
 

Пользователь вводит в строку поиска то, что ему и положено вводить - ל"ג . Проблема в том, что гершаим ("), это типа, апостров такой, РНР воспринимает как спец символ. Я естественно, попробовал ставить перед ним слеш. И всё естественно заработало.  
Теперь дело, казалось бы, за малым, заставить РНР искать гершаим, и ставить  перед ним слеш, что бы в запрос уже шло то, что я написал выше. Я сначала пробовал функцию addslashes(). Не помогло. Я стал анализировать. Пришёл к выводу, что РНР не может применять строковые функции к слову на иврите. Эти функции от иврита сходят с ума. Например, echo strlen($val_search).'<br />'; выводит 20. Это при том, что echo $val_search.'<br />'; пишет то, что и положено писать, &#1500;"&#1490;.  
Короче… буду счастлив выслушать хоть какую нибудь идею.
 
 
Добавлено:
Блин! Полный хрен! Форум не поддерживает слова на иврите! Я даже не могу задать толком свой вопрос!
 
Добавлено:
Это в первом случае:

А это во втором:





Я неясно сказал насчет выражений? Еще раз увижу - получите запрет на пост /Cheery/

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 15:35 15-10-2009 | Исправлено: Cheery, 21:49 15-10-2009
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
мда.
перечитай завет
там где-то было про то что кошерно юзать UTF-8 для базы и сайта
 
а ты отступник - потому у тебя нихрена невыходит
 
а ещё есть mb функции кои, кстати, тоже кошерны!!!

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 15:53 15-10-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сервер выдаёт мне страницы в UTF-8. Поэтому логично предположить, что и рнр файлы на сервере тоже в UTF-8.
То, что я только что писал про строковые функции, я проверял у себя на компе. А у меня то точно всё в UTF-8, и весь апач, и база тоже.

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 16:07 15-10-2009
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Сервер выдаёт мне страницы в UTF-8. Поэтому логично предположить, что и рнр файлы на сервере тоже в UTF-8.  

нелогично

Цитата:
То, что я только что писал про строковые функции, я проверял у себя на компе.

для танкистов
СМОТРИ MB ФУНКЦИИ такие как mb_strlen
 
 
Это при том, что echo $val_search.'<br />'; пишет то, что и положено писать, &#1500;"&#1490;.
 
если бы у тебя всё было в утф-8 - то ты бы увидел иврит а не &#1500;"&#1490;
 
Добавлено:
можешь выложить phpinfo с этого хоста?

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 16:14 15-10-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
phpinfo(); c моего компа, где всё, собственно и происходит.
Подробнее...  
 
 
 
Добавлено:

Цитата:
если бы у тебя всё было в утф-8 - то ты бы увидел иврит а не &#1500;"&#1490;  

Нет!!!!!!!!!!!!!!
Я же писал!!!!!!!!!!!
Я вижу всё, что положено. Это Руборд не поддерживает иврит! Поэтому я и выложил скрины! Мой первый пост прочитай внимательно.

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 16:23 15-10-2009 | Исправлено: israel_rider, 16:26 15-10-2009
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
default_charset no value no value  - это тебя не наводин на мысли о том что таки не utf-8 ?????
 
во вторых - выложи плз где-то на файлообменниках свой пхп файлик с ивритом
 
Добавлено:
ну и для квотирования нужно юзать http://ua2.php.net/manual/en/function.mysql-real-escape-string.php

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 16:47 15-10-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mamay! Плиз!!!! Ты вроде начинаешь меня спасать!  
Посмотрел php.ini . И в правду! Там ;default_charset = "iso-8859-1" Как это я проморгал, когда ставил! Был свято убеждён, что у меня ЮТФ 8 . Что ставить?
default_charset = "iso-8859-1"  ?

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 16:59 15-10-2009
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
utf-8 ставь
и юзай http://ua2.php.net/manual/en/function.mysql-real-escape-string.php для квотирования

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 17:03 15-10-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поставил  
default_charset = "utf-8"
Теперь phpinfo(); выдаёт - default_charset utf-8 utf-8  
Но это не помогает...
 
Добавлено:

Цитата:
во вторых - выложи плз где-то на файлообменниках свой пхп файлик с ивритом  

Я бы выложил. Но это СМS . Там милиард строк. Что именно выкладывать?  
Кусок, в котором всё дело , я выложил в первом посте, но иврит не отобразился. Тогда я выложил этот же кусок на скрине.
 
Добавлено:
Это какой то бред! Я пишу:
$SQL1 = mysql_real_escape_string ($SQL);
echo $SQL1;
Вот что оно мне выводит:

Из скрина видно, что самое главное, ("), оно мне не прослешивает!!!!
 
Добавлено:
То есть, у меня в запрос попадает это:

А запрос срабатывает правильно, только если там это:

 
 
 
Добавлено:

Цитата:
для танкистов  
СМОТРИ MB ФУНКЦИИ такие как mb_strlen  

 
Я попробовал :
echo mb_ereg_replace('"', '\"', $this->AllRequest['src_text']).'<br />';
Не помогло...
 
Добавлено:
Да... Только сейчас пришло в голову... Всё то, про что я пишу, происходит внутри функции класса. Соответственно, страничку на сайт выводит объект этого класса.  
Хотя, с другой стороны, какая может быть связь....

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 17:05 15-10-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
israel_rider
Прекращаем ненужный поток мыслей. Думайте про себя и формулируйте конечный варинт.

Цитата:
Не помогло...  

с уникодом именно такими функциями и надо пользоваться
 

Цитата:
$SQL1 = mysql_real_escape_string ($SQL);
echo $SQL1;  

что за глупость применять экранирование ко всему запросу? экранировать нужно параметры запроса.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:51 15-10-2009 | Исправлено: Cheery, 21:54 15-10-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я решил проблему. Ошибка была в написанной мной функции безопастности. Которая неожиданно дала такой эффект.  
Функция безопасности описана здесь - http://forum.ru-board.com/topic.cgi?forum=31&topic=3770&start=160#11
Ошибка была видимо в том, что я последовательно, одну за другой, к одному и тому же параметру применил  htmlspecialchars() и mysql_real_escape_string(). После того, как я оставил только одну функцию для проверки данных –  

Код:
 
//$item = htmlspecialchars($item, ENT_QUOTES);  
 $item = mysql_real_escape_string($item);
 

описываемая мной в этой теме проблема исчезла.

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 22:54 15-10-2009 | Исправлено: israel_rider, 22:57 15-10-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Как применить строковые функции к слову на иврите?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru