Funkce strpos

Funkce strpos vrací pozici prvního výskytu podřetězce v jiném řetězci nebo false, pokud podřetězec není nalezen. Prvním parametrem funkce přijímá řetězec, ve kterém se vyhledávání provádí, druhým parametrem - podřetězec, který se má hledat.

Ve výchozím nastavení funkce hledá od začátku řetězce až do prvního shody. Počátek vyhledávání lze regulovat třetím volitelným parametrem - pokud je zadán, vyhledávání nezačne od začátku řetězce, ale od zadaného místa.

Existuje také funkce stripos, která dělá to samé, ale bez rozlišení velikosti písmen.

Syntaxe

phpstrpos(string $haystack, string $needle, int $offset = 0): int|false

Příklad

V tomto příkladu funkce vrátí pozici prvního symbolu 'c'. Ten zaujímá pozici 2, protože počítání začíná od 0:

php<?php
  echo strpos('abcde abcde', 'c');
?>

Výsledek provedení kódu:

php2

Příklad

V tomto příkladu je zadán třetí parametr a proto vyhledávání začne od třetí pozice, v tomto případě funkce najde již druhý symbol 'c' a vypíše jeho pozici - 8:

php<?php
  echo strpos('abcde abcde', 'c', 3);
?>

Výsledek provedení kódu:

php8

Příklad

Pokud podřetězec nebude nalezen - funkce vrátí false. Pokud se řetězec nachází na začátku, pak funkce vrátí 0. To může být problém při porovnávání pomocí zkrácené formy podmínky:

php<?php
  if (strpos('http://site.ru', 'http://')) {
    echo '+++';
  } else {
    echo '---';
  }
?>

Výsledek provedení kódu (není takový, jaký jsme očekávali):

php'---'

Příklad

Provedeme správnou kontrolu začátku řetězce:

php<?php
  if (strpos('http://site.ru', 'http://') === 0) {
    echo '+++';
  } else {
    echo '---';
  }
?>

Výsledek provedení kódu:

php'+++'

Viz také

  • funkci strrpos,
    která vrací pozici posledního výskytu podřetězce
  • funkci str_contains,
    která ověřuje výskyt symbolu v řetězci
  • funkci str_starts_with,
    která ověřuje začátek řetězce
  • funkci str_ends_with,
    která ověřuje konec řetězce
  • funkci array_search,
    která provádí vyhledávání v poli