За последние 24 часа нас посетили 98020 программистов и 5743 робота. Сейчас ищут 2752 программиста ...

Поиск в строке

Тема в разделе "PHP для новичков", создана пользователем Миша, 21 июл 2015.

  1. Миша

    Миша Активный пользователь

    С нами с:
    14 фев 2015
    Сообщения:
    44
    Симпатии:
    0
    Есть строка, которую надо пороверить на соответствие. Есть массивы, в которых есть допустимые первое, второе, третье слова в строке. Вот код:
    Код (PHP):
    1. <?php
    2.   $1word = array("Message", "Text", "Alert");
    3.   $2word = array("Hello", "Hi", " Goodbye");
    4.   $3word = array("Friend", "My Firend", "Dear Friend");
    5.   $some_str = "Message: Hello Friend";
    6.   $some_str2 = "Alert: Hi My Friend;
    7.   if (есть случайное определенное соответствие массивам) {
    8.     выполнить действие;
    9.   }
    10.   elseif (есть соответствие) {
    11.     Выполнить действие;
    12.   }
    13. // и т.д.
    14.   else {
    15.     print " Error";
    16.   }
    17. ?>
    Как это сделать?
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    какой именно строка?

    на соответствие чему, с чем?

    или это ребус?

    Добавлено спустя 24 минуты 47 секунд:
    ну сначала надо сложить эти массивы, при помощи array_merge, а потом при помощи strpos определить, есть ли совпадения или нет.
     
  3. Миша

    Миша Активный пользователь

    С нами с:
    14 фев 2015
    Сообщения:
    44
    Симпатии:
    0
    Спасибо. Если что-то не получиться, еще к вам обращусь.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Код (PHP):
    1. $str = "Alert: Hi My Friend";
    2.  
    3. $arr1 = array("Message", "Text", "Alert");
    4. $arr2 = array("Hello", "Hi", " Goodbye");
    5. $arr3 = array("Friend", "My Firend", "Dear Friend");
    6.  
    7. $arr = array_merge($arr1, $arr2, $arr3);
    8.  
    9.  
    10. foreach($arr as $word)
    11. {
    12.     if (strpos($str,$word) !== false) echo "<div>{$word}</div>";
    13. } 
     
  5. yda4n1k

    yda4n1k Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Извините если не по теме, похожий случай.
    допустим есть массив и строка
    PHP:
    1. $a = array("haystack", "needle", "и т.д.");
    2. $text = "Возвращает подстроку строки haystack начиная с первого вхождения needle (и включая его) и до конца строки haystack.";
    Как мне найти что то одно из массива $a в строке $text
     
    #5 yda4n1k, 14 июн 2016
    Последнее редактирование модератором: 15 июн 2016
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    что значит одно? Есть массив со значениями и есть один текст и нужно найти в тексте хотя бы одно значение из массива?
     
  7. yda4n1k

    yda4n1k Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Да, все верно.
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Можно циклом foreach пройтись по массиву и проверять strpos значение массива на текст.
     
    metadon нравится это.
  9. yda4n1k

    yda4n1k Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Сделал примерно так:
    PHP:
    1. <?php $needle = "ключ1, ключ2, ключ3"; ?>
    2. //  Сам текст хранится в $ttt (тут очень много текста, которые также вытаскиваются в цикле foreach)
    3. <?php
    4. foreach ($ttt as $k=>$val){
    5.     $temp = explode(',',$needle);
    6.     foreach ($temp as $key=>$v){
    7.  
    8.        $haystack = $val['a_body'];
    9.        $pos  = strripos($haystack, $v);
    10.        if ($pos === false) {
    11.            //echo "К сожалению, ($needle) не найдена в ($haystack)";
    12.        } else {
    13.             echo "Поздравляем!\n";
    14.             echo "Последнее вхождение ($needle) найдено в (".wtf($haystack, 1).") в позиции ($pos)\n";
    15.        }
    16.      }
    17.   }
     
    #9 yda4n1k, 15 июн 2016
    Последнее редактирование модератором: 15 июн 2016