PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Robot-007
Отправлено: 27 Июля, 2016 - 17:50:09
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Здравствуйте.

Скажите пожалуйста как сделать логическое "И"

Например есть массив со строками:

Друг
Мир
Привет
Привет всем
Привет Мир
Этот Привет Мир Друг
Друг Мир Привет

Надо найти все нахождения в строке, имеющее слово "Привет" но не имеющее слово "Друг". При этом не известно в какой последовательности будет находится Привет, Друг и другие слова.
 
 Top
Fart
Отправлено: 27 Июля, 2016 - 21:14:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




можно код поинтереснее написать, но раз ты только задаешься вопросам как сделать...
тебе пример, чтобы наглядно видел логику:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $arr = array(
  2. "Друг",
  3. "Мир",
  4. "Привет",
  5. "Привет всем",
  6. "Привет Мир",
  7. "Этот Привет Мир Друг",
  8. "Друг Мир Привет"
  9. );
  10.  
  11. for($i=0; $i<count($arr); $i++)
  12. {
  13.         preg_match_all("/привет|друг/ui", $arr[$i], $a);
  14.  
  15.         if(!empty($a[0][0]))
  16.         {
  17.                 if(mb_strtolower($a[0][0]) == 'привет' AND !isset($a[0][1]))
  18.                 {
  19.                         echo $arr[$i]."<br>";
  20.                 }
  21.         }
  22. }

(Отредактировано автором: 27 Июля, 2016 - 21:15:12)

 
 Top
Robot-007
Отправлено: 28 Июля, 2016 - 00:50:58
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Fart пишет:
можно код поинтереснее написать, но раз ты только задаешься вопросам как сделать...
тебе пример, чтобы наглядно видел логику:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $arr = array(
  2. "Друг",
  3. "Мир",
  4. "Привет",
  5. "Привет всем",
  6. "Привет Мир",
  7. "Этот Привет Мир Друг",
  8. "Друг Мир Привет"
  9. );
  10.  
  11. for($i=0; $i<count($arr); $i++)
  12. {
  13.         preg_match_all("/привет|друг/ui", $arr[$i], $a);
  14.  
  15.         if(!empty($a[0][0]))
  16.         {
  17.                 if(mb_strtolower($a[0][0]) == 'привет' AND !isset($a[0][1]))
  18.                 {
  19.                         echo $arr[$i]."<br>";
  20.                 }
  21.         }
  22. }


Прикольно, спасибо. Пригодилось. Но все же интересно, неужели в регулярном выражении нет логического И. Было бы очень удобно одним запросом двух зайцев поймать. Я понимаю такого нет, но например если бы было /привет&&(^друг)/
 
 Top
Fart
Отправлено: 28 Июля, 2016 - 15:47:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




немного не пойму твоих замыслов. мой пример также фильтрует строчку по твоим запросам
есть привет, но нет друг.
$arr = array(
"Друг",
"Мир",
"Привет",
"Привет всем",
"Привет Мир",
"Этот Привет Мир Друг",
"Друг Мир Привет",
"/привет&&(^друг)/"
);
если тебе нужна другая логика и условие - меняй согласно своим запросам.

отвечаю на твой вопрос, про логическое "И" так как ты не понимаешь смысл функций и их принцип работы:

логическое "И" заменяется (выполняется функцией) preg_match_all
также будет влиять твой запрос в регулярке

(Отредактировано автором: 28 Июля, 2016 - 15:57:56)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB