Как проверить, содержит ли строка определенное слово?

Учтите:

$a = 'How are you?';

if ($a contains 'are')
    echo 'true';

Предположим, у меня есть приведенный 9X_php-fpm выше код. Как правильно написать оператор 9X_string if ($a contains 'are')?

2667
0
36
Общее количество ответов: 36

Ответ #1

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вы можете использовать функцию strpos(), которая 9X_substring используется для поиска вхождения одной 9X_string-manipulation строки в другую:

$a = 'How are you?';

if (strpos($a, 'are') !== false) {
    echo 'true';
}

Обратите внимание, что использование 9X_substring !== false является преднамеренным (ни != false, ни === true не вернут 9X_string желаемый результат); strpos() возвращает либо смещение, с 9X_php.ini которого строка иглы начинается в строке 9X_php стога сена, либо логическое значение false, если 9X_strings игла не найдена. Поскольку 0 - допустимое 9X_php-frameworks смещение, а 0 - «ложное», мы не можем использовать 9X_empty-string более простые конструкции, такие как !strpos($a, 'are').

Теперь в PHP 8 это можно сделать с помощью str_contains:

if (str_contains('How are you', 'are')) { 
    echo 'true';
}

RFC

7888
20

  • @Melsi Какая скорость связана с тем, используете ли вы сравнение с (`===`) или без (`==`) проверки типов? Вы полагаете ...

Ответ #2

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вы можете использовать регулярные выражения, так 9X_php5 как это лучше для сопоставления слов по 9X_str сравнению с strpos, как упоминали другие пользователи. Проверка 9X_substrings strpos для are также вернет истину для таких строк, как: fare, care, stare 9X_php и т. Д. Эти непреднамеренные совпадения 9X_substring можно просто избежать в регулярном выражении, используя 9X_contain границы слов.

Простое совпадение для are может 9X_containment выглядеть примерно так:

$a = 'How are you?';

if (preg_match('/\bare\b/', $a)) {
    echo 'true';
}

Что касается производительности, strpos примерно 9X_contain в три раза быстрее. Когда я сделал один 9X_contain миллион сравнений за один раз, на выполнение 9X_php preg_match потребовалось 1,5 секунды, а для strpos - 0,5 9X_php.ini секунды.

Изменить: Чтобы искать в любой части 9X_contains строки, а не только слово за словом, я бы 9X_empty-string рекомендовал использовать регулярное выражение, например

$a = 'How are you?';
$search = 'are y';
if(preg_match("/{$search}/i", $a)) {
    echo 'true';
}

i 9X_php-frameworks в конце регулярного выражения изменяет регулярное 9X_empty-string выражение на нечувствительность к регистру. Если 9X_str вы этого не хотите, вы можете не указывать 9X_string-matching его.

Теперь это может быть довольно проблематично 9X_php.ini в некоторых случаях, поскольку строка $ search 9X_php.ini никоим образом не дезинфицируется, я имею 9X_containment в виду, что в некоторых случаях она может 9X_str не пройти проверку, как если бы $search - это пользовательский 9X_str ввод, который они могут добавить некоторая 9X_containment строка, которая может вести себя как другое 9X_containment регулярное выражение ...

Кроме того, вот 9X_contains отличный инструмент для тестирования и просмотра 9X_php-fpm объяснений различных регулярных выражений 9X_substrings Regex101

Чтобы объединить оба набора функций в единую 9X_php-fpm многоцелевую функцию (в том числе с возможностью 9X_php-frameworks выбора чувствительности к регистру), вы 9X_php-fpm можете использовать что-то вроде этого:

function FindString($needle,$haystack,$i,$word)
{   // $i should be "" or "i" for case insensitive
    if (strtoupper($word)=="W")
    {   // if $word is "W" then word search instead of string in string search.
        if (preg_match("/\b{$needle}\b/{$i}", $haystack)) 
        {
            return true;
        }
    }
    else
    {
        if(preg_match("/{$needle}/{$i}", $haystack)) 
        {
            return true;
        }
    }
    return false;
    // Put quotes around true and false above to return them as strings instead of as bools/ints.
}

Еще одна вещь, которую следует иметь в виду: \b не будет работать на других языках, кроме английского.

The explanation for this and the solution is taken from here:

\b представляет 9X_substring начало или конец слова (границы слова). Этот регулярное 9X_strings выражение будет соответствовать яблоку в 9X_substring яблочном пироге, но не будет соответствовать 9X_substrings яблоку в ананасы, тележки с яблоками или 9X_str запеканки.

Как насчет «кафе»? Как мы можем 9X_php-fpm извлечь слово «кафе» из регулярного выражения? На 9X_str самом деле \ bcafé \ b не сработает. Почему? Поскольку 9X_contains «кафе» содержит не-ASCII-символ: é. \ b 9X_php-fpm нельзя просто использовать с Unicode, например समुद्र, 감사, месяц 9X_string-manipulation и? .

Если вы хотите извлечь символы Юникода, вы 9X_substring должны напрямую определяют символы, обозначающие 9X_contain границы слова.

Ответ: (?<=[\s,.:;"']|^)UNICODE_WORD(?=[\s,.:;"']|$)

Итак, чтобы использовать 9X_contains ответ в PHP, вы можете использовать эту 9X_php5 функцию:

function contains($str, array $arr) {
    // Works in Hebrew and any other unicode characters
    // Thanks https://medium.com/@shiba1014/regex-word-boundaries-with-unicode-207794f6e7ed
    // Thanks https://www.phpliveregex.com/
    if (preg_match('/(?<=[\s,.:;"\']|^)' . $word . '(?=[\s,.:;"\']|$)/', $str)) return true;
}

И если вы хотите найти массив слов, вы 9X_php-frameworks можете использовать это:

function arrayContainsWord($str, array $arr)
{
    foreach ($arr as $word) {
        // Works in Hebrew and any other unicode characters
        // Thanks https://medium.com/@shiba1014/regex-word-boundaries-with-unicode-207794f6e7ed
        // Thanks https://www.phpliveregex.com/
        if (preg_match('/(?<=[\s,.:;"\']|^)' . $word . '(?=[\s,.:;"\']|$)/', $str)) return true;
    }
    return false;
}

Начиная с PHP 8.0.0 9X_string теперь вы можете использовать str_contains

734
11

  • Этот комментарий никуда не пропал, но в любом случае: `preg_match` работает, когда вам нужно проверить результат запроса` json` (содержит ли он слово `err ...

Ответ #3

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вот небольшая служебная функция, которая 9X_substring может пригодиться в подобных ситуациях

// returns true if $needle is a substring of $haystack
function contains($needle, $haystack)
{
    return strpos($haystack, $needle) !== false;
}

293
8

  • Функции @RobinvanBaalen почти по определению предназначены для удобочитаемости (чтобы передать идею того, что ...

Ответ #4

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Чтобы определить, содержит ли строка другую 9X_strings строку, вы можете использовать функцию PHP 9X_string-manipulation strpos().

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )`

ВНИМАНИЕ!

Если игла, которую вы ищете, находится 9X_php-frameworks в начале стога сена, она вернет позицию 9X_str 0, если вы выполните == сравнение, которое 9X_string-matching не сработает, вам нужно будет выполнить 9X_string-manipulation ===

Знак == используется для сравнения и проверяет, имеет 9X_string ли переменная / выражение / константа слева 9X_php-frameworks то же значение, что и переменная / выражение 9X_php / константа справа.

Знак === - это сравнение, чтобы 9X_string-manipulation увидеть, равны ли две переменные / выражения 9X_php-frameworks / константы AND одного типа, т.е. обе являются 9X_php строками или обе являются целыми числами.

169
0

Ответ #5

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Хотя в большинстве этих ответов будет указано, появляется 9X_contains ли подстрока в вашей строке, обычно это 9X_string-manipulation не то, что вам нужно, если вы ищете конкретное 9X_containment слово, а не подстроку.

Какая разница? Подстроки могут появляться 9X_substring внутри других слов:

  • "есть" в начале "области"
  • "есть" в конце "заяц"
  • «Есть» в середине «тарифов»

Один из способов смягчить 9X_string-manipulation это — использовать регулярное выражение 9X_str в сочетании с word boundaries (\b):

function containsWord($str, $word)
{
    return !!preg_match('#\\b' . preg_quote($word, '#') . '\\b#i', $str);
}

У этого метода нет тех 9X_contain ложных срабатываний, которые были отмечены 9X_contains выше, но у него есть свои собственные пограничные 9X_php случаи. Границы слов совпадают для символов, отличных 9X_string-matching от слов (\W), которые могут быть любыми, кроме 9X_php5 a-z, A-Z, 0-9 или _. Это означает, что цифры и знаки 9X_string подчеркивания будут считаться символами 9X_contain слова, и такие сценарии не пройдут:

  • «Есть» в «О чем ты думаешь?»
  • «есть» в «лол, ты не знаешь, что это за 4?»

Если 9X_substrings вам нужно что-то более точное, чем это, вам 9X_string-manipulation придется начать анализировать синтаксис 9X_containment английского языка, а это довольно большая 9X_string-manipulation банка червей (и в любом случае предполагает 9X_str правильное использование синтаксиса, что 9X_string-matching не всегда является данностью).

162
2

  • это должен быть правильный ответ .. остальные ответы найдут "are" в строке ...

Ответ #6

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Look at strpos():


9X_string-manipulation

76
0

Ответ #7

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Другим вариантом будет использование strstr() или 9X_php5 stristr(), если ваш поиск должен быть нечувствительным 9X_php к регистру.

66
1

  • Примечание на странице http://php.net/manual/en/function.strstr.php: Примечание: Если вы хотите только определить, встречается ли конкретная иголка в стоге сена, используйте вместо этого ...

Ответ #8

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Изучите комментарии SamGoody и Lego Stormtroopr.

Если 9X_contains вы ищете алгоритм PHP для ранжирования результатов поиска на основе близости / релевантности нескольких слов вот 9X_php.ini быстрый и простой способ создания результатов 9X_string-matching поиска только с помощью PHP:

Проблемы с другими логическими методами поиска, такими как strpos(), preg_match(), strstr() или stristr()

  1. не может искать несколько слов
  2. результаты без ранжирования

Метод PHP на основе Vector Space Model и tf-idf (term frequency–inverse document frequency):

Звучит сложно, но 9X_containment на удивление легко.

Если мы хотим найти несколько 9X_php.ini слов в строке, основная проблема заключается 9X_string в том, как присвоить вес каждому из них?

Если 9X_string-matching бы мы могли взвесить термины в строке в 9X_containment зависимости от того, насколько они репрезентативны 9X_containment для строки в целом, мы могли бы отсортировать 9X_str наши результаты по тем, которые лучше всего 9X_string-matching соответствуют запросу.

В этом заключается 9X_strings идея модели векторного пространства, недалеко от того, как работает полнотекстовый поиск SQL:

function get_corpus_index($corpus = array(), $separator=' ') {

    $dictionary = array();

    $doc_count = array();

    foreach($corpus as $doc_id => $doc) {

        $terms = explode($separator, $doc);

        $doc_count[$doc_id] = count($terms);

        // tf–idf, short for term frequency–inverse document frequency, 
        // according to wikipedia is a numerical statistic that is intended to reflect 
        // how important a word is to a document in a corpus

        foreach($terms as $term) {

            if(!isset($dictionary[$term])) {

                $dictionary[$term] = array('document_frequency' => 0, 'postings' => array());
            }
            if(!isset($dictionary[$term]['postings'][$doc_id])) {

                $dictionary[$term]['document_frequency']++;

                $dictionary[$term]['postings'][$doc_id] = array('term_frequency' => 0);
            }

            $dictionary[$term]['postings'][$doc_id]['term_frequency']++;
        }

        //from http://phpir.com/simple-search-the-vector-space-model/

    }

    return array('doc_count' => $doc_count, 'dictionary' => $dictionary);
}

function get_similar_documents($query='', $corpus=array(), $separator=' '){

    $similar_documents=array();

    if($query!=''&&!empty($corpus)){

        $words=explode($separator,$query);

        $corpus=get_corpus_index($corpus, $separator);

        $doc_count=count($corpus['doc_count']);

        foreach($words as $word) {

            if(isset($corpus['dictionary'][$word])){

                $entry = $corpus['dictionary'][$word];


                foreach($entry['postings'] as $doc_id => $posting) {

                    //get term frequency–inverse document frequency
                    $score=$posting['term_frequency'] * log($doc_count + 1 / $entry['document_frequency'] + 1, 2);

                    if(isset($similar_documents[$doc_id])){

                        $similar_documents[$doc_id]+=$score;

                    }
                    else{

                        $similar_documents[$doc_id]=$score;

                    }
                }
            }
        }

        // length normalise
        foreach($similar_documents as $doc_id => $score) {

            $similar_documents[$doc_id] = $score/$corpus['doc_count'][$doc_id];

        }

        // sort from  high to low

        arsort($similar_documents);

    }   

    return $similar_documents;
}

СЛУЧАЙ 1

$query = 'are';

$corpus = array(
    1 => 'How are you?',
);

$match_results=get_similar_documents($query,$corpus);
echo '
';
    print_r($match_results);
echo '
';

РЕЗУЛЬТАТ

Array
(
    [1] => 0.52832083357372
)

СЛУЧАЙ 2

$query = 'are';

$corpus = array(
    1 => 'how are you today?',
    2 => 'how do you do',
    3 => 'here you are! how are you? Are we done yet?'
);

$match_results=get_similar_documents($query,$corpus);
echo '
';
    print_r($match_results);
echo '
';

РЕЗУЛЬТАТЫ

Array
(
    [1] => 0.54248125036058
    [3] => 0.21699250014423
)

СЛУЧАЙ 3

$query = 'we are done';

$corpus = array(
    1 => 'how are you today?',
    2 => 'how do you do',
    3 => 'here you are! how are you? Are we done yet?'
);

$match_results=get_similar_documents($query,$corpus);
echo '
';
    print_r($match_results);
echo '
';

РЕЗУЛЬТАТЫ

Array
(
    [3] => 0.6813781191217
    [1] => 0.54248125036058
)

Необходимо 9X_php5 внести множество улучшений но модель позволяет 9X_php-frameworks получать хорошие результаты от естественных 9X_substring запросов, которые не имеют логических операторов, таких 9X_php-fpm как strpos(), preg_match(), strstr() или stristr().

NOTA BENE

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

  • тем самым уменьшая размер 9X_php индекса и уменьшая потребность в памяти

  • меньше 9X_string-manipulation дискового ввода-вывода

  • более быстрое индексирование 9X_empty-string и, как следствие, более быстрый поиск.

1. Нормализация

  • Преобразовать весь текст в нижний регистр

2. Устранение запрещенных слов

  • Удалите из текста слова, не имеющие реального значения (например, "и", "или", "the", "for" и т. д.)

3. Подстановка словаря

  • Замените 9X_contains слова другими с таким же или похожим значением. (например: замените 9X_strings «голодный» и «голодный» на «голодный»)

  • Могут 9X_php.ini быть применены дополнительные алгоритмические 9X_contains меры (снежный ком) для дальнейшего сокращения 9X_string-manipulation слов до их основного значения.

  • Замена названий 9X_substrings цветов их шестнадцатеричными эквивалентами

  • Уменьшение 9X_strings числовых значений за счет уменьшения точности 9X_php.ini - это еще один способ нормализации текста.

РЕСУРСЫ

56
0

Ответ #9

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Используйте соответствие без учета регистра с помощью stripos():

if (stripos($string,$stringToSearch) !== false) {
    echo 'true';
}

9X_substrings

51
0

Ответ #10

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Если вы хотите избежать проблемы "ложности" и 9X_php-fpm "правды", вы можете использовать substr_count:

if (substr_count($a, 'are') > 0) {
    echo "at least one 'are' is present!";
}

Он 9X_containment немного медленнее, чем strpos, но позволяет 9X_empty-string избежать проблем со сравнением.

43
0

Ответ #11

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

if (preg_match('/(are)/', $a)) {
   echo 'true';
}

9X_php.ini

38
1

  • Я получаю следующее предупреждение: ПРЕДУПРЕЖДЕНИЕ preg_match(): разделитель не должен быть бу ...

Ответ #12

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Другой вариант - использовать функцию strstr(). Что-то 9X_contains вроде:

if (strlen(strstr($haystack,$needle))>0) {
// Needle Found
}

Обратите внимание: функция strstr() чувствительна 9X_php.ini к регистру. Для поиска без учета регистра 9X_substring используйте функцию stristr().

32
1

  • strstr() возвращает FALSE, если игла не была найдена. Так что в strlen нет необход ...

Ответ #13

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

В PHP лучший способ проверить, содержит 9X_string-manipulation ли строка определенную подстроку, - это 9X_contain использовать простую вспомогательную функцию, подобную 9X_contain этой:

function contains($haystack, $needle, $caseSensitive = false) {
    return $caseSensitive ?
            (strpos($haystack, $needle) === FALSE ? FALSE : TRUE):
            (stripos($haystack, $needle) === FALSE ? FALSE : TRUE);
}

Пояснение:

  • strpos находит позицию первого вхождения подстроки с учетом регистра в строке.
  • stripos находит позицию первого появления в строке подстроки без учета регистра.
  • myFunction($haystack, $needle) === FALSE ? FALSE : TRUE гарантирует, что myFunction всегда возвращает логическое значение, и исправляет непредвиденное поведение, когда индекс подстроки равен 0.
  • $caseSensitive ? A : B выбирает strpos или stripos для выполнения работы в зависимости от значения $caseSensitive.

Вывод:

var_dump(contains('bare','are'));            // Outputs: bool(true)
var_dump(contains('stare', 'are'));          // Outputs: bool(true)
var_dump(contains('stare', 'Are'));          // Outputs: bool(true)
var_dump(contains('stare', 'Are', true));    // Outputs: bool(false)
var_dump(contains('hair', 'are'));           // Outputs: bool(false)
var_dump(contains('aren\'t', 'are'));        // Outputs: bool(true)
var_dump(contains('Aren\'t', 'are'));        // Outputs: bool(true)
var_dump(contains('Aren\'t', 'are', true));  // Outputs: bool(false)
var_dump(contains('aren\'t', 'Are'));        // Outputs: bool(true)
var_dump(contains('aren\'t', 'Are', true));  // Outputs: bool(false)
var_dump(contains('broad', 'are'));          // Outputs: bool(false)
var_dump(contains('border', 'are'));         // Outputs: bool(false)

30
0

Ответ #14

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Я немного впечатлен тем, что ни один из 9X_string ответов здесь, в которых используются strpos, strstr и 9X_substrings аналогичные функции, еще не упоминается 9X_string Multibyte String Functions (2015-05-08).

Обычно, если у вас проблемы с поиском слов с символами, характерными для некоторых языков, например, немецкого, французского, португальского, испанского 9X_php5 и т. д. (например: ä , é, ô, ç, º, ñ), вы можете 9X_substring захотеть перед функциями должен стоять mb_. Следовательно, в 9X_str принятом ответе вместо этого будет использоваться 9X_string-manipulation mb_strpos или mb_stripos (для сопоставления без учета регистра):

if (mb_strpos($a,'are') !== false) {
    echo 'true';
}

Если 9X_empty-string вы не можете гарантировать, что all your data is 100% in UTF-8, вы можете 9X_containment использовать функции mb_.

Хорошая статья, чтобы 9X_contain понять, почему The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) от Joel Spolsky.

30
0

Ответ #15

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вы можете использовать функцию strstr:

$haystack = "I know programming";
$needle   = "know";
$flag = strstr($haystack, $needle);

if ($flag){

    echo "true";
}

Без использования встроенной функции:

$haystack  = "hello world";
$needle = "llo";

$i = $j = 0;

while (isset($needle[$i])) {
    while (isset($haystack[$j]) && ($needle[$i] != $haystack[$j])) {
        $j++;
        $i = 0;
    }
    if (!isset($haystack[$j])) {
        break;
    }
    $i++;
    $j++;

}
if (!isset($needle[$i])) {
    echo "YES";
}
else{
    echo "NO ";
}

9X_str

27
1

  • [Сбои] (http://stackoverflow.com/a/12804233/ ...

Ответ #16

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Функция ниже также работает и не зависит 9X_php.ini от других функций; он использует только 9X_empty-string собственные манипуляции со строками PHP. Лично 9X_php-fpm я этого не рекомендую, но вы можете посмотреть, как 9X_contains это работает:

 1) {
      for ($i = 0; $i < $string_length; $i++) {
        /*
        the remaining part of the string is equal or greater than the keyword
        */
        if (($string_length + 1 - $i) >= $keyword_length) {

          // Check if keyword's first char == string's first char
          if ($keyword_first_char == $string[$i]) {
            $match = 1;
            for ($j = 1; $j < $keyword_length; $j++) {
              if (($i + $j < $string_length) && $keyword[$j] == $string[$i + $j]) {
                $match++;
              }
              else {
                return false;
              }
            }

            if ($match == $keyword_length) {
              return true;
            }

            // end if first match found
          }

          // end if remaining part
        }
        else {
          return false;
        }

        // end for loop
      }

      // end case4
    }

    return false;
  }
}

Тест:

var_dump(is_str_contain("test", "t")); //true
var_dump(is_str_contain("test", "")); //false
var_dump(is_str_contain("test", "test")); //true
var_dump(is_str_contain("test", "testa")); //flase
var_dump(is_str_contain("a----z", "a")); //true
var_dump(is_str_contain("a----z", "z")); //true 
var_dump(is_str_contain("mystringss", "strings")); //true 

25
3

  • @Sunny: это была опечатка: var_dump (is_str_contain ("mystringss", "strings" ...

Ответ #17

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Многие ответы, в которых используется substr_count, проверяют, является 9X_string-manipulation ли результат >0. Но поскольку оператор if считает 9X_empty-string нулевым same as false, вы можете избежать этой проверки 9X_php.ini и написать напрямую:

if (substr_count($a, 'are')) {

Чтобы проверить, отсутствует, добавьте 9X_string оператор !:

if (!substr_count($a, 'are')) {

24
0

Ответ #18

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

У меня были проблемы с этим, и в конце концов 9X_substrings я решил создать собственное решение. Без 9X_containment использования движка regular expression:

function contains($text, $word)
{
    $found = false;
    $spaceArray = explode(' ', $text);

    $nonBreakingSpaceArray = explode(chr(160), $text);

    if (in_array($word, $spaceArray) ||
        in_array($word, $nonBreakingSpaceArray)
       ) {

        $found = true;
    }
    return $found;
 }

Вы можете заметить, что 9X_strings предыдущие решения не являются ответом на 9X_containment слово, используемое в качестве префикса 9X_empty-string для другого. Чтобы использовать ваш пример:

$a = 'How are you?';
$b = "a skirt that flares from the waist";
$c = "are";

В 9X_php5 приведенных выше примерах и $a, и $b содержат 9X_string-matching $c, но вы можете захотеть, чтобы ваша функция 9X_strings сообщала вам, что только $a содержит $c.

23
2

  • вы, вероятно, имели в виду: `$ found = false` в начале<p><span cl ...

Ответ #19

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Другой вариант поиска вхождения слова в 9X_contain строке с помощью strstr() и stristr() выглядит следующим 9X_string-matching образом:


21
0

Ответ #20

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Это можно сделать тремя разными способами:

 $a = 'How are you?';

1- stristr()

 if (strlen(stristr($a,"are"))>0) {
    echo "true"; // are Found
 } 

2- strpos()

 if (strpos($a, "are") !== false) {
   echo "true"; // are Found
 }

3- preg_match()

 if( preg_match("are",$a) === 1) {
   echo "true"; // are Found
 }

9X_substrings

19
0

Ответ #21

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Краткая версия

$result = false!==strpos($a, 'are');

9X_string

16
1

  • Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-base ...

Ответ #22

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Не используйте preg_match(), если вы хотите только проверить, содержится 9X_string ли одна строка в другой строке. Вместо этого 9X_substring используйте strpos() или strstr(), так как они будут быстрее. (http://in2.php.net/preg_match)

if (strpos($text, 'string_name') !== false){
   echo 'get the string';
}

15
0

Ответ #23

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Чтобы найти "слово", а не ряд букв, которые 9X_php5 на самом деле могут быть частью другого 9X_php слова, хорошим решением будет следующее.

$string = 'How are you?';
$array = explode(" ", $string);

if (in_array('are', $array) ) {
    echo 'Found the word';
}

15
1

  • он завершится неудачно, если `$ string` равно` Are are, are? ...

Ответ #24

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вы должны использовать нечувствительный 9X_php5 к регистру формат, поэтому, если введенное 9X_php.ini значение находится в small или caps, это не имеет 9X_substring значения.


Здесь stripos находит иглу в heystack 9X_php5 без учета регистра (small / caps).

PHPCode Sample with output

14
0

Ответ #25

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Может быть, вы могли бы использовать что-то 9X_empty-string вроде этого:


14
0

Ответ #26

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Если вы хотите проверить, содержит ли строка 9X_substrings несколько специфических слов, вы можете 9X_contains сделать:

$badWords = array("dette", "capitale", "rembourser", "ivoire", "mandat");

$string = "a string with the word ivoire";

$matchFound = preg_match_all("/\b(" . implode($badWords,"|") . ")\b/i", $string, $matches);

if ($matchFound) {
    echo "a bad word has been found";
}
else {
    echo "your string is okay";
}

Это полезно, чтобы избежать спама, например, при 9X_contains отправке электронных писем.

13
0

Ответ #27

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Функция strpos работает нормально, но если 9X_php.ini вы хотите выполнить case-insensitive проверку слова в абзаце, вы 9X_php5 можете использовать функцию stripos из PHP.

Например,

$result = stripos("I love PHP, I love PHP too!", "php");
if ($result === false) {
    // Word does not exist
}
else {
    // Word exists
}

Найдите 9X_str позицию первого вхождения в строке подстроки 9X_contains без учета регистра.

Если слово не существует 9X_substrings в строке, он вернет false, иначе он вернет 9X_php5 позицию слова.

12
0

Ответ #28

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Строку можно проверить с помощью следующей 9X_php5 функции:

function either_String_existor_not($str, $character) {
    return strpos($str, $character) !== false;
}

11
1

  • можно упростить до `return strpos ($ st ...

Ответ #29

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вам необходимо использовать идентичные / не 9X_php5 идентичные операторы, потому что strpos 9X_substring может возвращать 0 в качестве значения индекса. Если 9X_php5 вам нравятся тернарные операторы, подумайте 9X_string-matching об использовании следующего (я допускаю, что 9X_php это немного отстает):

echo FALSE === strpos($a,'are') ? 'false': 'true';

10
0

Ответ #30

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Проверить, содержит ли строка определенные 9X_str слова?

Это означает, что строка должна быть 9X_substrings преобразована в слова (см. примечание ниже).

Один 9X_empty-string из способов сделать это и указать разделители 9X_string-manipulation - использовать preg_split (doc):


Пробежка дает

$ php -f test.php                   
string 'How are you?' contains word 'are' 
string 'How are you?' does not contain word 'ar'
string 'How are you?' does not contain word 'hare'

Примечание. Здесь мы 9X_str не подразумеваем слово для каждой последовательности 9X_contain символов.

Практическое определение слова 9X_php5 - это механизм регулярных выражений PCRE, где 9X_php-fpm слова - это подстроки, состоящие только 9X_strings из словесных символов, разделенных символами, отличными 9X_php-fpm от слов.

Символ "слово" - это любая 9X_empty-string буква, цифра или символ подчеркивания, то 9X_empty-string есть любой символ, который может быть частью 9X_php.ini "слова" Perl. В определение 9X_php-fpm букв и цифр контролируется символом PCRE таблицы, и 9X_str может отличаться, если выполняется сопоставление 9X_php.ini для конкретного региона (..)

9
0

Ответ #31

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Другое решение для конкретной строки:

$subject = 'How are you?';
$pattern = '/are/';
preg_match($pattern, $subject, $match);
if ($match[0] == 'are') {
    echo true;
}

Вы 9X_str также можете использовать функцию strpos().

9
0

Ответ #32

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Использование:

$text = 'This is a test';
echo substr_count($text, 'is'); // 2

// So if you want to check if is exists in the text just put
// in a condition like this:
if (substr_count($text, 'is') > 0) {
    echo "is exists";
}

9X_php-frameworks

9
0

Ответ #33

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Вы также можете использовать встроенные 9X_php-frameworks функции strchr() и strrchr() и расширения для многобайтовых 9X_string-matching строк mb_strchr() и mb_strrchr(). Эти функции возвращают части 9X_php строк и FALSE, если ничего не найдено.

  • strchr() - найти первое вхождение строки (является псевдонимом strstr()).
  • strrchr() - найти последнее вхождение символа в строку.

8
1

  • Для меня это лучший ответ из всех, ха-ха.<p><sp ...

Ответ #34

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Использование:

$a = 'How are you?';
if (mb_strpos($a, 'are')) {
    echo 'true';
}

Выполняет многобайтовую безопасную 9X_substrings операцию strpos().

6
1

  • Это плохой ответ. Если строка поиска будет в начале искомой строки, то функция `mb_strpos (...)` вернет ноль, который превраща ...

Ответ #35

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Более простой вариант:

return ( ! empty($a) && strpos($a, 'are'))? true : false;

9X_contain

6
0

Ответ #36

Ответ на вопрос: Как проверить, содержит ли строка определенное слово?

Я думаю, что неплохо использовать mb_stpos:

$haystack = 'How are you?';
$needle = 'are';

if (mb_strpos($haystack, $needle) !== false) {

    echo 'true';
}

Поскольку 9X_php.ini это решение чувствительно к регистру и безопасно для всех символов Юникода.


Но вы также можете сделать 9X_empty-string это так (такого ответа еще не было):

if (count(explode($needle, $haystack)) > 1) {

    echo 'true';
}

Это решение также чувствительно к регистру и безопасно для символов Юникода.

Кроме того, вы 9X_php.ini не используете отрицание в выражении, что увеличивает удобочитаемость кода.


Вот другое решение с использованием функции:

function isContainsStr($haystack, $needle) {

    return count(explode($needle, $haystack)) > 1;
}

if (isContainsStr($haystack, $needle)) {

    echo 'true';
}

6
0