Я использую preg_split, чтобы найти некоторые результаты, и он отлично работает, за исключением (как ни странно) первого слова.
Например, если есть элемент под названием «телефон синий» и я ищу «случайный телефон», я ничего не получаю, однако если я ищу «случайный телефон» (или «что-то телефонное», «что-то случайное по телефону» и т. д.), он находит «телефон синий».
Я искал разные выражения и пробовал их (например, @[\W]+@ , /[\s,]+/ и т. д.). Но ничего не помогает. Я могу только предположить, что первая попытка найти элемент (с полной строкой) приводит к путанице, но понятия не имею, как это сделать. Совершенно новичок в этом!
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: забыл отметить, что простой поиск по слову «телефон» также не работает.
function find_by_location_or_name($where) {
// first try complete
$this->db->where('items_location', $where);
$this->db->or_like('items_name', $where);
$query = $this->db->from('items_table')->get();
// if nothing, break it up, try again
if( !$query->num_rows) {
$where_like = preg_split('/ /', $where);
$tryagain = false;
foreach($where_like as $like) {
if(! $tryagain) {
$this->db->like('items_location', $like);
} else {
$this->db->or_like('items_name', $like);
}
$tryagain = true;
}
// Do the query
$query = $this->db->from('items_table')->get();
}
Как искать строки, ГДЕ значения столбца могут быть точными или частичными, с помощью построителя запросов CodeIgniter [д ⇐ Php
Кемеровские программисты php общаются здесь
1777424868
Anonymous
Я использую preg_split, чтобы найти некоторые результаты, и он отлично работает, за исключением (как ни странно) первого слова.
Например, если есть элемент под названием «телефон синий» и я ищу «случайный телефон», я ничего не получаю, однако если я ищу «случайный телефон» (или «что-то телефонное», «что-то случайное по телефону» и т. д.), он находит «телефон синий».
Я искал разные выражения и пробовал их (например, @[\W]+@ , /[\s,]+/ и т. д.). Но ничего не помогает. Я могу только предположить, что первая попытка найти элемент (с полной строкой) приводит к путанице, но понятия не имею, как это сделать. Совершенно новичок в этом!
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: забыл отметить, что простой поиск по слову «телефон» также не работает.
function find_by_location_or_name($where) {
// first try complete
$this->db->where('items_location', $where);
$this->db->or_like('items_name', $where);
$query = $this->db->from('items_table')->get();
// if nothing, break it up, try again
if( !$query->num_rows) {
$where_like = preg_split('/ /', $where);
$tryagain = false;
foreach($where_like as $like) {
if(! $tryagain) {
$this->db->like('items_location', $like);
} else {
$this->db->or_like('items_name', $like);
}
$tryagain = true;
}
// Do the query
$query = $this->db->from('items_table')->get();
}
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия