stripos
(PHP 5, PHP 7)
stripos — Возвращает позицию первого вхождения подстроки без учета регистра
Описание
Ищет позицию первого вхождения подстроки
needle
в строку haystack
.
В отличие от strpos(), эта функция не учитывает регистр символов.
Список параметров
-
haystack
-
Строка, в которой производится поиск.
-
needle
-
Заметьте, что
needle
может содержать строку из одного или более символов.Если
needle
не является строкой, он приводится к целому и трактуется как код символа. -
offset
-
Если этот параметр указан, то поиск будет начат с указанного количества символов с начала строки. В отличии от strrpos() и strripos() данный параметр не может быть отрицательным.
Возвращаемые значения
Возвращает позицию, в которой находится искомая строка, относительно
начала строки haystack
(независимо от смещения (offset).
Также обратите внимание на то, что позиция строки отсчитывается от 0, а не от 1.
Возвращает FALSE
, если искомая строка не найдена.
Эта функция
может возвращать как boolean FALSE
, так и не-boolean значение,
которое приводится к FALSE
. За более подробной информацией обратитесь к разделу
Булев тип. Используйте оператор === для проверки значения,
возвращаемого этой функцией.
Примеры
Пример #1 Пример использования stripos()
<?php
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';
$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);
// Конечно, 'a' не входит в 'xyz'
if ($pos1 === false) {
echo "Строка '$findme' не найдена в строке '$mystring1'";
}
// Заметьте, что используется ===. Использование == не даст верного
// результата, так как 'a' в нулевой позиции.
if ($pos2 !== false) {
echo "Нашел '$findme' в '$mystring2' в позиции $pos2";
}
?>
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Смотрите также
- mb_stripos() - Поиск позиции первого вхождения одной строки в другую, нечувствителен к регистру
- strpos() - Возвращает позицию первого вхождения подстроки
- strrpos() - Возвращает позицию последнего вхождения подстроки в строке
- strripos() - Возвращает позицию последнего вхождения подстроки без учета регистра
- stristr() - Регистронезависимый вариант функции strstr
- substr() - Возвращает подстроку
- str_ireplace() - Регистронезависимый вариант функции str_replace
- addcslashes
- addslashes
- bin2hex
- chop
- chr
- chunk_split
- convert_cyr_string
- convert_uudecode
- convert_uuencode
- count_chars
- crc32
- crypt
- echo
- explode
- fprintf
- get_html_translation_table
- hebrev
- hebrevc
- hex2bin
- html_entity_decode
- htmlentities
- htmlspecialchars_decode
- htmlspecialchars
- implode
- join
- lcfirst
- levenshtein
- localeconv
- ltrim
- md5_file
- md5
- metaphone
- money_format
- nl_langinfo
- nl2br
- number_format
- ord
- parse_str
- printf
- quoted_printable_decode
- quoted_printable_encode
- quotemeta
- rtrim
- setlocale
- sha1_file
- sha1
- similar_text
- soundex
- sprintf
- sscanf
- str_getcsv
- str_ireplace
- str_pad
- str_repeat
- str_replace
- str_rot13
- str_shuffle
- str_split
- str_word_count
- strcasecmp
- strchr
- strcmp
- strcoll
- strcspn
- strip_tags
- stripcslashes
- stripos
- stripslashes
- stristr
- strlen
- strnatcasecmp
- strnatcmp
- strncasecmp
- strncmp
- strpbrk
- strpos
- strrchr
- strrev
- strripos
- strrpos
- strspn
- strstr
- strtok
- strtolower
- strtoupper
- strtr
- substr_compare
- substr_count
- substr_replace
- substr
- trim
- ucfirst
- ucwords
- vfprintf
- vprintf
- vsprintf
- wordwrap
Коментарии
I found myself needing to find the first position of multiple needles in one haystack. So I wrote this little function:
<?php
function multineedle_stripos($haystack, $needles, $offset=0) {
foreach($needles as $needle) {
$found[$needle] = stripos($haystack, $needle, $offset);
}
return $found;
}
// It works as such:
$haystack = "The quick brown fox jumps over the lazy dog.";
$needle = array("fox", "dog", ".", "duck")
var_dump(multineedle_stripos($haystack, $needle));
/* Output:
array(3) {
["fox"]=>
int(16)
["dog"]=>
int(40)
["."]=>
int(43)
["duck"]=>
bool(false)
}
*/
?>
Regarding the function by spam at wikicms dot org
It is very bad practice to use the same function name as an existing php function but have a different output format. Someone maintaining the code in the future is likely to be very confused by this. It will also be hard to eradicate from a codebase because the naming is identical so each use of stripos() would have to be analyzed to see how it is expecting the output format (bool or number/bool).
Calling it string_found() or something like that would make a lot more sense for long-term use.
Regarding the === note, it might be worth clarifying that the correct tests for a binary found/not found condition are !==false to detect found, and ===false to detect not found.
Unlike strpos() it seems that stripos() does NOT issue a WARNING if the needle is an empty string ''.
Finding numbers in strings requires you to cast the number to string first.
strpos("123", 2) !== strpos("123", "2")