Ruslan203

Ruslan203
Рейтинг
99
Регистрация
23.03.2006
ivan-lev:
Скорее не в PHP

Если в шелле выполнить locale -a - что выдаст? Вот то, что выдаст (с UTF-8) и использовать в setlocale (до операций со строками). Если не выдаст - конфигурировать локали. В Debian-дистрибутивах dpkg reconfigure locales

Выдало:

ru_RU

ru_RU.cp1251

ru_RU.koi8r

ru_RU.utf8

---------- Добавлено 01.03.2013 в 21:56 ----------

Если выполнить запрос show variables like 'char%'; на выделенном сервере:

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/

На мастрехосте:

| character_set_client | cp1251 |

| character_set_connection | cp1251 |

| character_set_database | cp1251 |

| character_set_filesystem | binary |

| character_set_results | cp1251 |

| character_set_server | cp1251 |

| character_set_system | utf8 |

| character_sets_dir | /usr/local/share/mysql/charsets/ |

Это может как то повлиять?

Silent_Kill:
если оно частично подсвечивает значит врятли в кодировке дело. тут какаето проблема именно с заглавными, с локалью покрутить можно. или из регулярки убрать u модификатор, может поможет, может он наоборот лишний =)

Напишите что на что менять, попробую:)

Милованов Ю.С:
Почему не работает?
Ошибки появляются, или что?

Попробуйте прописать одну из следующих строк перед функцией markText:
setlocale(LC_ALL,"ru_RU.cp1251");
или
setlocale(LC_ALL,"ru_RU.utf-8");

Это у меня стояло изначально, ошибок никаких нет, просто большие буквы не подсвечивает, я вот думал может какая то хрень отключена в пхп ?

почему ключ u не фурычит?

---------- Добавлено 01.03.2013 в 17:11 ----------

Милованов Ю.С:


Какая кодировка на сайте? Если ЮТФ-8 - попробуйте сначала конвертить строку в ВИН-1251, пропускать через preg_replace, а потом назад в ЮТФ-8.

На сайте все в UTF-8

А что значит конвертировать?

Да вы гений! Задам тогда еще пару вопросов:

Как сделать приоритет при поиске? Имеется искать сначала по определенному полю, далее по другим...

код:


function markText ($t, $q) {
$q = iconv('utf-8', 'windows-1251', $q);//Если кодировка ЮТФ-8, иначе убрать
$q = ucfirst($q);
$q = iconv('windows-1251', 'utf-8', $q);//Если кодировка ЮТФ-8, иначе убрать
return preg_replace ("~($q)~iu", "<b style=\"color: #990000\">\\1</b>", $t);
}
$query = R('DJEM')->GetForeach();
$query->Path('<['main.users']._id>.$');
$query->Limit(20);


$queryParams = array();
$queryValues = array();

if (empty ($_REQUEST ['term'])) die ("Ничего не найдено");
if (!empty($_REQUEST['term'])) {
$queryStr = trim(strip_tags($_REQUEST['term']));
$queryStr = str_replace (array ('!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}', '_', '-', '=', '+', ':', ';', '<', '>', '"', "'", '?', '~', '|', '/', '\\'), '', $queryStr);
if ($queryStr == '') die ("Ничего не найдено");
$queryParams[] = '_name like "%?%"';
$queryParams[] = 'doljnost like "%?%"';
$queryValues[] = $queryStr;
$queryValues[] = $queryStr;

$queryPhone = preg_replace ('~\D~', '', $queryStr);
if (!empty($queryPhone)) {
$queryParams[] = 'phone like "%?%"';
$queryParams[] = 'dob1 like "%?%"';
$queryValues[] = $queryPhone;
$queryValues[] = $queryPhone;
}
}

if (count($queryParams)) {
$query->Where(join(' || ', $queryParams), $queryValues);
}

// if ($queryPhone == '') $queryPhone = "5843209284352348709857423048975";
{{$query->Where('(_name like "%?%") || (phone like "%?%") || (doljnost like "%?%") || (dob1 like "%?%") ', $queryStr, $queryPhone, $queryStr, $queryPhone);}}
{{$query->Where('_name like "%?%" || phone like "%?%" || doljnost like "%?%" || dob1 like "%?%" ', $queryStr, $queryPhone, $queryStr, $queryPhone);}}
if ($query -> size () != 0) {
echo "<ul>";
foreach ($query as $q)
echo '<li><a href="' . $q -> _url . '"><span>' . markText ($q->_name, $queryStr) . '</span></a>' . ($q->doljnost == '' ? '' : ', ' . markText ($q->doljnost, $queryStr)) . ($q->phone == '' ? '' : ', ' . markText (preg_replace ('/^(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*/','$1 ($2$3$4) $5$6$7-$8$9-$10$11', $q->phone), $queryStr)) . ($q->dob1 == '' ? '' : ', ' . markText (preg_replace ('/^(\d)\D*(\d)\D*(\d)\D*(\d)\D*/','$1$2-$3$4 ', preg_replace ('/^(\d)\D*(\d)\D*(\d)\D*/','$1-$2$3 ', $q->dob1)), $queryStr)) . "</li>";

echo "</ul>";
} else {
echo "<center>Не найдено ни одного сотрудника.</center>";
}

п.с. возможно вопрос будет глупым, так как не владею знаниями пхп....

---------- Добавлено 01.03.2013 в 16:55 ----------

Милованов Ю.С:
НЕ самый правильный вариант:

function markText ($t, $q) {
$q = iconv('utf-8', 'windows-1251', $q);//Если кодировка ЮТФ-8, иначе убрать
$q = ucfirst($q);
$q = iconv('windows-1251', 'utf-8', $q);//Если кодировка ЮТФ-8, иначе убрать
return preg_replace ("~($q)~iu", "<b style=\"color: #990000\">\\1</b>", $t);
}


Какая версия ПХП была на старом хостинге и какая здесь?

На старом PHP Version 5.2.17 (мастерхост)

Туда куда перенесли: PHP Version 5.2.8

---------- Добавлено 01.03.2013 в 17:03 ----------

Рано радовался, не работает оказывается:(

Ayavryk:
Невозможно угадать не зная ни структуры сайта ни планов развития сайта.
Объединять имеет смысл только тогда, когда большая часть из них грузится на странице (или на 3-4 обязательно просматриваемых страницах ) одновременно.
Но если на одной странице у вас выводится не больше 5-10 логотипов, а общее количество в десять раз больше, от спрайта будет один вред.

На главной будет 3 логотипа "основных" все остальные логотипы будут показываться только тогда когда нажали "Все бренды"

Dinozavr:
спрайты делают для уменьшения кол-ва запросов на сервер при часто повторяющихся изображениях.
это ваш случай?

С этим я не сталкивался...

Dinozavr:
а какая разница в размере: 1 большой или 11 маленьких?

Ну по сути да, но все таки хотелось бы услышать мнение всех чтоб сделать более грамотно и практично!☝

Dinozavr:
если вам нужны просто ответы: переделывать не надо и можно продолжать эти

Не слишком ли большой размер будет этого png при 11 логотипах?

Сколько примерно ждать выплаты?

Отлично сделал работу. Сдал раньше оговоренного срока. Рекомендую к сотрудничеству.

Всего: 713