Функции Язык программирования PHP

strpos

(PHP 3, PHP 4)

strpos - находит позицию первого вхождения строки.

Описание

int strpos (string haystack, string needle [, int offset])

Возвращает числовую позицию первого вхождения needle в строке haystack. В отличие от strrpos(), эта функция принимает полную строку как параметр needle, и вся эта строка используется.

Если needle не найден, возвращает FALSE.

Примечание: легко ошибиться с return-значениями "character found at position 0" и "character not found". Вот как определить разницу:
// в PHP 4.0b3 и новее: $pos = strpos($mystring, "b"); if ($pos === false) 
{ // note: three equal signs // не найден ... } // в версиях до 4.0b3: $pos = 
strpos($mystring, "b"); if (!is_integer($pos)) { // не найден ... }

Если needle не является строкой, он конвертируется в integer и применяется как порядковое значение символа.

Необязательный параметр offset позволяет специфицировать, с какого символа в haystack начинать поиск. Эта позиция возвращается как относительная к началу haystack.

См. также strrpos(), strrchr(), substr(), stristr() и strstr().


Назад Оглавление Вперёд
strncmp Вверх strrchr

Условные субпатэрны

Первая часть совпадает с необязательной открывающей скобкой, и, если символ имеется, устанавливает его как первую совпавшую подстроку.
Вторая часть совпадает с одним или более символов, которые не являются скобками.
Третья часть это условный субпатэрн, который проверяет, совпадает ли первый набор скобок или нет. Если совпал, то есть если субъект начинается с открывающей скобки, условие будет TRUE, будет выполняться yes-pattern и необходима закрывающая скобка. Иначе, поскольку no-pattern отсутствует, субпатэрн не совпадёт ни с чем. Другими словами, этот патэрн совпадает с последовательностью не-скобок, возможно, заключённой в скобки.

Если условие не является последовательностью цифр, оно обязано быть утверждением. Это может быть положительное или отрицательное lookahead или lookbehind утверждение.
Рассмотри патэрн, снова содержащий незначащий пробел и две альтернативы во второй строчке:

(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )

Условие это положительное опережающее/lookahead утверждение, которое совпадает с необязательной последовательностью не-букв с последующей буквой. Другими словами, оно проверяет наличие минимум одной буквы в субъекте. Если буква найдена, вновь проверяется совпадение субъекта с первой альтернативой; иначе проверяется совпадение со второй альтернативой. Этот патэрн совпадает со строками одной из двух форм: dd-aaa-dd или dd-dd-dd, где aaa это буквы, а dd это цифры.