stripos

(PHP 5)

striposВозвращает позицию первого вхождения подстроки без учета регистра

Описание

int stripos ( string $haystack , string $needle [, int $offset = 0 ] )

Ищет позицию первого вхождения подстроки 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";
}
?>

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • strpos() - Возвращает позицию первого вхождения подстроки
  • strrpos() - Возвращает позицию последнего вхождения подстроки в строке
  • strripos() - Возвращает позицию последнего вхождения подстроки без учета регистра
  • stristr() - Регистро-независимый вариант функции strstr
  • substr() - Возвращает подстроку
  • str_ireplace() - Регистро-независимый вариант функции str_replace

Коментарии

Автор:
this would to work with any language, i hope.
tested on czech (eastern europe) lang.

<?php
/****************************************
*    SAFE HIGHLIGHT
****************************************/
/**
 * function finds and encase every string in a $needleArr array with
 * strings $shearLft (from the left side) and $shearRgt (guess from which
 * side).
 * already encased needles are IGNORED for any other step, so order
 * of needles in $needleArr is pretty important.
 * 
 * function is searching needles in case-insensitive mode,
 * but case in the subject is saved.
 * 
 * can you do it better? so, do it.
 *
 * @param array $needleArr array of needles
 * @param string $shearLft left shear
 * @param string $shearRgt right shear
 * @param string $subject subject
 * @param string $encoding encoding ('utf-8' is default)
 * 
 * @author griffin
 */
function safeHighlight$needleArr$shearLft$shearRgt$subject$encoding 'utf-8')
{
   
   
// encoding
   
$e $encoding;
   
   
// oh, no needles
   
if( !is_array$needleArr))
        return 
$subject;
       
   
// empty keys throw-off, only unique, reindex
   
$nA array_values(
           
array_unique(
               
array_diff$needleArr, array(''))
            )
        );
   
   
// needle count
   
if( !($nC count$nA)))
        return 
$subject// nothing to hl
       
    // shear length
   
if( !(($rLL mb_strlen$rL $shearLft$e))
    + (
$rRL mb_strlen$rR $shearRgt$e))))
        return 
$subject// no shears
   
    // subject length
   
if( !($sL mb_strlen$s $subject$e)))
        return 
null// empty subject
       
    // subject in lowercase (we need to aviod
    // using mb_stripos due to PHP version)
   
$sW mb_strtolower$s$e);
   
   
// masking ~ 0=not changed, 1=changed
   
$m str_repeat'0'$sL);
   
   
// loop for each needle
   
for( $n=0$n<$nC$n++)
    {
       
       
// needle string loWercase
       
$nW mb_strtolower$nA$n], $e);
       
       
$o 0// offset
       
$nL mb_strlen$nW$e); // needle length

        // search needle
       
while( false !== ($p mb_strpos$sW$nW$o$e)))
        {
           
// oh hurrey, needle found on $p position
           
            // is founded needle already modified? (in full-length)
           
for( $q=$p$q<($p+$nL); $q++)
                if( 
$m$q])
                {
                   
// ai, caramba. already modified, jump over
                   
$o+= $nL;
                   
                   
// continue for while() loop - not for for() loop!
                   
continue 2;
                }
           
           
// explode subject and mask into three parts
            // partA|needle|partB
           
$sE[0] = mb_substr$s0$p$e);
           
$sE[1] = mb_substr$s$p$nL$e);
           
$sE[2] = mb_substr$s$p+$nL$sL-$p-$nL$e);
           
           
// mask
            // partA|partB (needle not needed)
           
$mE[0] = mb_substr$m0$p$e);
           
$mE[1] = mb_substr$m$p+$nL$sL-$p-$nL$e);
           
           
// apply shears
           
$sE[1] = $rL.$sE[1].$rR;
           
           
// update sunject length
           
$sL+= $rLL $rRL;
           
           
// update mask
           
$m $mE[0] . str_repeat'1'$rLL $nL $rRL) . $mE[1];
           
           
// implode into a subject
           
$s implode$sE);
           
           
// update lowercase subject
           
$sW mb_strtolower$s$e);
           
           
// increase offset
           
$o+= $rLL $nL $rRL;
           
           
// end of string reached
           
if( $o>=$sL)
                break;
           
        } 
// while()
       
   
// for( $n=0; $n<$nC; $n++)
   
    // oouu yeaaa, kick the subject out of the function
   
return $s;
   
// function safeHighlight()
/****************************************
*    END: SAFE HIGHLIGHT
****************************************/
?>
2007-03-20 06:57:59
http://php5.kiev.ua/manual/ru/function.stripos.html
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)
   }
*/
?>
2009-02-24 21:31:52
http://php5.kiev.ua/manual/ru/function.stripos.html
A handy function if you need to adjust layout based on whether or not a string contains descending letters:

<?php function containsDescenders($text) {
   
$descenders = array("g","j","p","q","y");
    foreach (
$descenders as $letter) {
        if (
stripos($text,$letter) !== false) {
            return 
true;
        }
    }
    return 
false;
?>
2013-07-01 19:38:03
http://php5.kiev.ua/manual/ru/function.stripos.html
If you like using ternary operator, I wrote simple example how to use stripos function.
Also, in my example I add "How to use namespaces" for wide knowledges for newbies.

<?php
namespace My
;

//You can be free using core functions in your NameSpaces (My)
function stripos($haystack$needle) {
   
//To call core function (from global NS) you should add backslash only - \func
   
return (FALSE === stripos($haystack$needle)) ? FALSE TRUE;
}

var_dump(stripos($haystack 'John knows English language.'$needle 'john')); //TRUE
var_dump(stripos($haystack 'Sara knows English language too.'$needle 'john')); //FALSE
?>
2013-12-15 10:57:32
http://php5.kiev.ua/manual/ru/function.stripos.html
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.
2015-03-04 16:08:11
http://php5.kiev.ua/manual/ru/function.stripos.html
Автор:
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.
2015-08-29 13:25:57
http://php5.kiev.ua/manual/ru/function.stripos.html

    Поддержать сайт на родительском проекте КГБ