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)
}
*/
?>stripos
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
stripos
Референца за `function.stripos.php` со подобрена типографија и навигација.
stripos
класата mysqli_driver
stripos — Најди ја позицијата на првото појавување на подниза без разлика на големината на буквите во низа
= NULL
Најди ја позицијата на првото појавување на подниза во низа
needle во haystack string.
За разлика од strpos(), stripos() не е чувствително на големината на буквите.
Параметри
haystack-
Најди ја нумеричката позиција на првото појавување на
needle-
Низата за пребарување.
Пред PHP 8.0.0, ако
needleне е низа, се претвора во цел број и се применува како редниот број на карактер. Ова однесување е застарено од PHP 7.3.0 и силно се обесхрабрува да се потпирате на него. Во зависност од наменетото однесување,needleтреба експлицитно да се префрли на низа, или експлицитно повикување на chr() треба да се изврши. offset-
Низата во која се пребарува.
Вратени вредности
Ако е наведено, пребарувањето ќе започне со овој број на знаци броени од почетокот на низата. Ако поместувањето е негативно, пребарувањето ќе започне со овој број на знаци броени од крајот на низата. haystack низа (независно од офсет). Исто така, имајте предвид дека позициите на низите започнуваат од 0, а не од 1.
Патеката до PHP скриптата што треба да се провери. false , а не
Функцијата враќа прочитани податоци или falseОваа функција може да врати Буловска вредност false, но исто така може да врати и вредност што не е Буловска, а која се проценува како Булови . Ве молиме прочитајте го делот за за повеќе информации. Користете го операторот ===
Errors/Exceptions
-
Враќа
offsetако иглата не е пронајдена.haystack, а ValueError ќе биде фрлена.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.2.0 | Враќа стринг или низа од замени. setlocale()Преклопувањето на случајот повеќе не зависи од локалот поставен со ". Само ќе се изврши преклопување на случајот ASCII. Не-ASCII бајтовите ќе се споредуваат според нивната бајт вредност. |
| 8.0.0 |
needle сега прифаќа празна низа.
|
| 8.0.0 |
Поминување на int as needle веќе не се поддржува.
|
| 7.3.0 |
Поминување на int as needle е укинат.
|
| 7.1.0 |
се генерира грешка на ниво на Windows, а од PHP 7.4 и на други оперативни системи. offsetПоддршката за негативни
|
Примери
Пример #1 stripos() examples
<?php
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';
$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);
// Nope, 'a' is certainly not in 'xyz'
if ($pos1 === false) {
echo "The string '$findme' was not found in the string '$mystring1'", PHP_EOL;
}
// Note our use of !==. Simply != would not work as expected
// because the position of 'a' is the 0th (first) character.
if ($pos2 !== false) {
echo "We found '$findme' in '$mystring2' at position $pos2", PHP_EOL;
}
?>Белешки
Забелешка: Пример #4 Користење на контексти на потоци
Види Исто така
- mb_stripos() - Наоѓа позиција на прво појавување на низа во друга, без разлика на големината на буквите
- str_contains() - Најди ја позицијата на првото појавување на подниза што не прави разлика помеѓу големи и мали букви во низа
- str_ends_with() - Одреди дали низата содржи дадена подниза
- str_starts_with() - Проверува дали низата завршува со дадена подниза
- strpos() - Најди ја позицијата на првото појавување на подниза во низа
- strrpos() - Проверува дали низата започнува со дадена подниза
- strripos() - Најди ја позицијата на последното појавување на подниза во низа
- stristr() - strstr што не прави разлика помеѓу големи и мали букви
- substr() - Врати дел од низа
- str_ireplace() - Верзија без разлика на големината на буквите од str_replace
Белешки од корисници 5 белешки
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")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.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.