Как проверить, содержит ли строка определенное слово?
Учтите:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
Предположим, у меня есть приведенный 9X_php-fpm выше код. Как правильно написать оператор 9X_string if ($a contains 'are')
?
Ответ #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';
}
- @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
- Этот комментарий никуда не пропал, но в любом случае: `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;
}
- Функции @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 строками или обе являются целыми числами.
Ответ #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 не всегда является данностью).
- это должен быть правильный ответ .. остальные ответы найдут "are" в строке ...
Ответ #6
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Ответ #7
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Другим вариантом будет использование strstr()
или 9X_php5 stristr()
, если ваш поиск должен быть нечувствительным 9X_php к регистру.
- Примечание на странице 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()
- не может искать несколько слов
- результаты без ранжирования
Метод 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 - это еще один способ нормализации текста.
РЕСУРСЫ
- http://linuxgazette.net/164/sephton.html
- http://snowball.tartarus.org/
- MySQL Fulltext Search Score Explained
- http://dev.mysql.com/doc/internals/en/full-text-search.html
- http://en.wikipedia.org/wiki/Vector_space_model
- http://en.wikipedia.org/wiki/Tf%E2%80%93idf
- http://phpir.com/simple-search-the-vector-space-model/
Ответ #9
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Используйте соответствие без учета регистра с помощью stripos()
:
if (stripos($string,$stringToSearch) !== false) {
echo 'true';
}
9X_substrings
Ответ #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 избежать проблем со сравнением.
Ответ #11
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
if (preg_match('/(are)/', $a)) { echo 'true'; }
9X_php.ini
- Я получаю следующее предупреждение: ПРЕДУПРЕЖДЕНИЕ preg_match(): разделитель не должен быть бу ...
Ответ #12
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Другой вариант - использовать функцию strstr(). Что-то 9X_contains вроде:
if (strlen(strstr($haystack,$needle))>0) {
// Needle Found
}
Обратите внимание: функция strstr() чувствительна 9X_php.ini к регистру. Для поиска без учета регистра 9X_substring используйте функцию stristr().
- 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)
Ответ #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.
Ответ #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
- [Сбои] (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
- @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')) {
Ответ #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
.
- вы, вероятно, имели в виду: `$ found = false` в начале<p><span cl ...
Ответ #19
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Другой вариант поиска вхождения слова в 9X_contain строке с помощью strstr() и stristr() выглядит следующим 9X_string-matching образом:
Ответ #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
Ответ #21
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Краткая версия
$result = false!==strpos($a, 'are');
9X_string
- Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (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';
}
Ответ #23
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Чтобы найти "слово", а не ряд букв, которые 9X_php5 на самом деле могут быть частью другого 9X_php слова, хорошим решением будет следующее.
$string = 'How are you?';
$array = explode(" ", $string);
if (in_array('are', $array) ) {
echo 'Found the word';
}
- он завершится неудачно, если `$ string` равно` Are are, are? ...
Ответ #24
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Вы должны использовать нечувствительный 9X_php5 к регистру формат, поэтому, если введенное 9X_php.ini значение находится в small
или caps
, это не имеет 9X_substring значения.
Здесь stripos находит иглу в heystack 9X_php5 без учета регистра (small / caps).
Ответ #25
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Может быть, вы могли бы использовать что-то 9X_empty-string вроде этого:
Ответ #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 отправке электронных писем.
Ответ #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 позицию слова.
Ответ #28
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Строку можно проверить с помощью следующей 9X_php5 функции:
function either_String_existor_not($str, $character) {
return strpos($str, $character) !== false;
}
- можно упростить до `return strpos ($ st ...
Ответ #29
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Вам необходимо использовать идентичные / не 9X_php5 идентичные операторы, потому что strpos 9X_substring может возвращать 0 в качестве значения индекса. Если 9X_php5 вам нравятся тернарные операторы, подумайте 9X_string-matching об использовании следующего (я допускаю, что 9X_php это немного отстает):
echo FALSE === strpos($a,'are') ? 'false': 'true';
Ответ #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 для конкретного региона (..)
Ответ #31
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Другое решение для конкретной строки:
$subject = 'How are you?';
$pattern = '/are/';
preg_match($pattern, $subject, $match);
if ($match[0] == 'are') {
echo true;
}
Вы 9X_str также можете использовать функцию strpos()
.
Ответ #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
Ответ #33
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Вы также можете использовать встроенные 9X_php-frameworks функции strchr()
и strrchr()
и расширения для многобайтовых 9X_string-matching строк mb_strchr()
и mb_strrchr()
.
Эти функции возвращают части 9X_php строк и FALSE
, если ничего не найдено.
-
strchr()
- найти первое вхождение строки (является псевдонимомstrstr()
). -
strrchr()
- найти последнее вхождение символа в строку.
- Для меня это лучший ответ из всех, ха-ха.<p><sp ...
Ответ #34
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Использование:
$a = 'How are you?';
if (mb_strpos($a, 'are')) {
echo 'true';
}
Выполняет многобайтовую безопасную 9X_substrings операцию strpos().
- Это плохой ответ. Если строка поиска будет в начале искомой строки, то функция `mb_strpos (...)` вернет ноль, который превраща ...
Ответ #35
Ответ на вопрос: Как проверить, содержит ли строка определенное слово?
Более простой вариант:
return ( ! empty($a) && strpos($a, 'are'))? true : false;
9X_contain
Ответ #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';
}
-
3
-
3
-
2
-
10
-
11
-
21
-
2
-
6
-
5
-
8
-
7
-
3
-
10
-
19
-
3
-
3
-
1
-
2
-
2
-
3
-
2
-
4
-
10
-
23
-
2
-
9
-
4
-
9
-
2
-
2
-
3
-
3
-
6
-
5
-
2
-
8
-
2
-
2
-
3
-
4
-
4
-
3
-
9
-
5
-
6
-
11
-
2
-
3
-
3
-
1