Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 14.11.2018
Сообщений: 3

Php mysqli как сделать вывод из базы в массив и сделать проверку на сходство

14.11.2018, 02:29. Показов 2950. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как сделать что-то подобное.
Есть база данных
В базе таблица типа:
(название 1 столба) - notes
(строка 1) - текст1, текст2, текст3
(строка 2) - другой текст
(строка 3) - текст4
(название 2 столба) - notes_ot
(строка 1) - Ответ1
(строка 2) - Ответ2
(строка 3) - Ответ3
т.е в строках первого столба могут встречаться слова через запятую, словосочетания, и просто слово. Во втором столбе просто предложения.
Как вывести из первого столба, из базы данных в массив типа:
$array = array("текст1", "текст2", "текст3", "другой текст", "текст4");
А после сделать проверку со строкой например:
$text = "В этой книге много текста, есть и другой текст";
На наличие чего-либо из массива в этом тексте и вывести ответ если есть совпадения. Ответ должен быть со второго столба. Например:
Если если в этом тексте($text) совпадения например текста из массива "другой текст", то вывести 'ответ2' - со второго столба.
Извините,я первый раз обращаюсь на форум и не знаю как правильно тут писать.
//
Выборку делаю так
PHP
1
2
3
4
5
6
7
$sql = "SELECT * FROM `notes`";
$result = mysqli_query($link,$sql);
while($row= mysqli_fetch_assoc($result)) {
    $not= $row['notes_title'];
 $array = preg_split("/[\s,]+/", $not);
 
print_r($array);
Ответ не устраивает:
Array ( [0] => Текст1 [1] => текст2 [2] => текст3 ) Array ( [0] => Другой [1] => текст) Array ( [0] => Текст4 )
//
Проверку делаю так, в принципе она работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$text = "В этой книге много текста, есть и другой текст";
$slova = array(//тут то что хочу вывести с базы данных);
$m = false; //ставлю флаг
foreach($slova as $slovo) {
  if (strpos($text, $slovo) !== false) {
     
    $m = true; // если слова найдены то переключаю на ИСТИНА
  }
}
if ($m) { //если истина то выполняю условие
  echo 'в тексте есть совпадения';
 
}
Подскажите пожалуйста, как это организовать
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2018, 02:29
Ответы с готовыми решениями:

Как сделать проверку на наличия маила в базе c mysqli?
Здравствуйте подскажите как правильно переделать выражения из mysql в mysqli, $sel = ("SELECT * FROM `users` WHERE `mail` =...

Как в php сделать вывод на печать для базы данных
Как сделать вывод на печать данных из б.д , которые выведенны на сайт путем запросов

Как сделать такой MySQLi PHP запрос?
Добрый вечер, У меня есть 2 таблицы Company: company_id, company_name REVIEW: review_id, company_id, review_text Я пытаюсь...

4
Невнимательный
 Аватар для ft4l
3107 / 1282 / 358
Регистрация: 08.02.2013
Сообщений: 7,505
Записей в блоге: 2
14.11.2018, 03:15
Цитата Сообщение от Вчеслав Посмотреть сообщение
Ответ не устраивает:
...... Array ( [0] => Другой [1] => текст) Array ( [0] => Текст4 )
Неустраивает то что в одном из случаев "[0] => Другой [1] => текст" , т.е нужно "[0] => Другой текст"?
Если запятые есть везде где разделяется нужное
$array = preg_split("/,\s*/", $not);
Eсли нужен один массив со всеми результатами, можно так
$array = array_merge($array, preg_split("/,\s*/", $not));
// возможно после цикла нужно ещё $array = array_unique($array);
1
0 / 0 / 0
Регистрация: 14.11.2018
Сообщений: 3
14.11.2018, 11:41  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Неустраивает то что в одном из случаев "[0] => Другой [1] => текст" , т.е нужно "[0] => Другой текст"?
Да, верно, не устраивает именно поэтому.
Спасибо за ответ, буду пробовать

Добавлено через 22 минуты
Ответ выше исправил положение в плане словосочетаний выдается правильно
[0] => Другой текст"
Но если слова через запятую, все равно вывод типа:
Array ( [0] => Текст1 [1] => текст2 [2] => текст3 ) Array ( [0] => Другой текст ) Array ( [0] => Текст4 )
Хотелось бы чтоб и подобный текст выводился, как:
Array ( [0] => Текст1 ) Array ( [0] => Текст2 ) Array ( [0] => Текст3 )Array ( [0] => Другой текст ) Array ( [0] => Текст4 )

И еще один вопрос. Почему каждый отдельный массив идет с заглавной буквы, это можно как-то исправить?

Добавлено через 47 минут
С массивом, в принципе, можно оставить и такого плана, как подсказал ft4l. С заглавными буквами разобраться бы и создать бы ответ со второго столба на совпадение.
Сейчас имею:
массив выходит, пусть и такого вида, но по проверки на совпадения работает как надо.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$text = "В тексте есть много текста, есть и Другой текст";
$sql = "SELECT * FROM `notes`";
$result = mysqli_query($link,$sql);
while($row = mysqli_fetch_assoc($result)) {
    $array = $row['notes_title'];
$array1 = preg_split("/,\s*/", $array);
print_r($array1);
$slova = $array1;
$m = false; //ставлю флаг
foreach($slova as $slovo) {
if (strpos($text, $slovo) !== false) {
$m = true; // если слова найдены то переключаю на ИСТИНА
  }
}
if ($m) { //если истина то выполняю условие
  print '-Есть совпадение';
 
}
}
Ответ вполне устраивает
Array ( [0] => Текст1 [1] => текст2 [2] => текст3 ) Array ( [0] => Другой текст ) -Есть совпадение Array ( [0] => Текст4 )

Не устраивают заглавные буквы в массиве, как избавиться?
0
Невнимательный
 Аватар для ft4l
3107 / 1282 / 358
Регистрация: 08.02.2013
Сообщений: 7,505
Записей в блоге: 2
14.11.2018, 15:05
Лучший ответ Сообщение было отмечено Вчеслав как решение

Решение

Зависит от кодировки текста, и от того что предпочтительнее, менять заглавные буквы
или искать без учёта регистра
Например у меня такое с UTF-8 заработало
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
ini_set('display_errors', 1);
ini_set('log_errors', 0);
 
//setlocale(LC_ALL, 'ru_RU.utf8');// в разных системах разные
// не помогало со stripos()
$text = "В тексте есть много текста, есть и дрУгОЙ текст";
 
$rows = array(
    'Текст1, Текст2, Текст3',
    'Текст4, Другой текст',
    'Текст5',
    'Текст4, Другой текст'
);
 
$array = array();
for($i=0; $i<count($rows); ++$i){
    $array = array_merge($array, preg_split("/,\s*/", $rows[$i]));
}
echo '<xmp>';
echo '$array = ';
var_dump($array);
echo "</xmp>\n";
 
$result =0;
for($i=0; $i<count($array); ++$i){
//  if (stripos($text, $array[$i]) !== false) {
// потребовалось это // sudo apt install  php-mbstring
    if (mb_stripos($text, $array[$i]) !== false) {
        ++$result;
        break;
    }
}
if ($result)
    echo "Найдено совпадение с \$array[$i]\n";
else
    echo "Не найдено совпадений\n";
 
echo '<hr/>php-'.phpversion() .'<hr/>'. $_SERVER['SERVER_SIGNATURE'] ."\n";
?>
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$array = array(8) {
  [0]=>
  string(11) "Текст1"
  [1]=>
  string(11) "Текст2"
  [2]=>
  string(11) "Текст3"
  [3]=>
  string(11) "Текст4"
  [4]=>
  string(23) "Другой текст"
  [5]=>
  string(11) "Текст5"
  [6]=>
  string(11) "Текст4"
  [7]=>
  string(23) "Другой текст"
}
Найдено совпадение с $array[4] php-7.2.10-0ubuntu1
Apache/2.4.34 (Ubuntu) Server at php.localhost Port 80
1
0 / 0 / 0
Регистрация: 14.11.2018
Сообщений: 3
14.11.2018, 15:25  [ТС]
Спасибо тебе. Буду пробовать. Вроде все понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2018, 15:25
Помогаю со студенческими работами здесь

Как на php+mysqli сделать смену картинок?
ссылки на картинки хранятся в таблице data бд test сена картинки в html документе по нажатию на кнопку без таймера. За одно нажатие смена...

Как сделать вывод данных в диапазоне mysqli
Как сделать так, чтобы вывод по диапазону выводил на эту же страницу, и правильно ли я сделал sql запрос? тут весть код &lt;?php ...

Как сделать проверку базы адресов на наличие мертвых ссылок?
Как сделать проверку базы адресов на наличие мертвых ссылок?

Как сделать проверку на авторизацию без базы данных .htaccess
Всем привет есть такой код: &lt;?php $admin_login=&quot;1&quot;; $admin_password=&quot;2&quot;; if($admin_login == ($_POST) &amp;&amp; $admin_password ==...

Как сделать проверку checkbox на PHP?
Народ, подскажите, как мне сделать обработку чекбоксов в php? Нужно если checkbox отмечен, вставлять в новую переменную нужное значение....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru