Таблица «Функции и методы строк»
Функция или метод | Назначение |
---|---|
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» | Литералы строк |
S = «s\np\ta\nbbb» | Экранированные последовательности |
S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
S = b»byte» | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S | Обращение по индексу |
S | Извлечение среза |
len(S) | Длина строки |
S.find(str, ,) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, ,) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, ,) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, ,) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена) | Замена шаблона на замену. maxcount ограничивает количество замен |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, ) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, ,) | Возвращает количество непересекающихся вхождений подстроки в диапазоне (0 и длина строки по умолчанию) |
S.expandtabs() | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip() | Удаление пробельных символов в начале строки |
S.rstrip() | Удаление пробельных символов в конце строки |
S.strip() | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
Синтаксис для использования strpos
PHP функция strpos
используется следующим образом:
$position = strpos($given_string, $search_string);
Примечание:
При поиске с помощью функции strpos
регистр имеет значение. Так что поиск по ключевым словам “Test”
и “test”
даст различные результаты.
Отсчет позиции начинается с 0
, а не 1
.
На примере демо-версий я продемонстрирую использование этой функции для поиска заданной подстроки и вводимого пользователем значения.
Простой пример использования функции strpos
Посмотрите следующий пример, в котором я использовал заданные для поиска значения, чтобы продемонстрировать работу функции strpos PHP
:
Посмотреть онлайн демо-версию и код
Код PHP
:
<?php $source_string = «This is a strpos Tuotrial which is used to search strings. It tells whether a given string contains a search string or not!»;
$search_term = «strpos»;
$posistion = strpos($source_string, $search_term);
if ($posistion === false) {
echo «The source string does not contain the: «$search_term»!»;
} else {
echo «The string contains the search term: «$search_term»! «;
echo » The given substr found at: $posistion»;
}
?>
strpos PHP пример:
The string contains the search term: ‘strpos’!
The given substring found at: 10
Пример использования strpos для поиска вводимого пользователем термина
Этот метод может оказаться полезным в определенных сценариях. Например, когда в форму не разрешается вводить определенные слова.
Кроме этого можно проверить, содержится ли слово, заданное пользователем на поиск, в исходной строке. Исходя из этого, можно вывести определенные результаты в виде ответа.
В этой демо-версии, пользователь может ввести термин в текстовое поле. После нажатия кнопки запускается функция strpos, чтобы проверить, содержит ли исходная строка подстроку. На экран будет выводиться соответствующее сообщение:
$source_string = «In this demo, I am using a user entered search term to check if string contains search term or not by using strpos!»;
Попробуйте ввести разные буквы или слова для поиска, чтобы проверить вернет ли функция значение false
. Кроме этого попробуйте ввести термины заглавными или маленькими буквами, чтобы увидеть разницу.
Для этого был использован следующий пример PHP strpos utf 8
:
<?php $search_term=$_POST;
$source_string = «In this demo, I am using a user entered search term to check if string contains search term or not by using strpos!»;
// = «strpos»;
$posistion = strpos($source_string, $search_term);
if($search_term){
echo «
«;
if ($posistion === false) {
echo «The source string does not contain the: «$search_term»!»;
} else {
echo «The string contains the search term: «$search_term»! «;
echo » The given substring found at: $posistion»;
}
echo »
Строковые функции в Python
Python предоставляет различные встроенные функции, которые используются для работы со строками.
Метод | Описание |
---|---|
Выводит первый символ строки заглавными буквами. Эта функция устарела в python3 | |
Возвращает версию строки, пригодную для сравнений без регистра. | |
Возвращает строку, заполненную пробелами, причем исходная строка центрируется с равным количеством пробелов слева и справа. | |
Подсчитывает количество вхождений подстроки в строку между начальным и конечным индексом. | |
Декодирует строку. | |
Кодирование строки. Кодировка по умолчанию — . | |
Возвращает булево значение, если строка заканчивается заданным суффиксом между begin и end. | |
Определяет табуляцию в строке до нескольких пробелов. По умолчанию количество пробела равно 8. | |
Возвращает значение индекса строки, в которой найдена подстрока между начальным и конечным индексами. | |
Возвращает форматированную версию строки, используя переданное значение. | |
Выбрасывает исключение, если строка не найдена. Работает так же, как и метод . | |
Возвращает true, если символы в строке являются буквенно-цифровыми, т.е. алфавитами или цифрами, и в ней есть хотя бы один символ. В противном случае возвращается . | |
Возвращает , если все символы являются алфавитными и есть хотя бы один символ, иначе . | |
Возвращает , если все символы строки являются десятичными. | |
Возвращает , если все символы являются цифрами и есть хотя бы один символ, иначе . | |
Возвращает , если строка является действительным идентификатором. | |
Возвращает , если символы строки находятся в нижнем регистре, иначе . | |
Возвращает , если строка содержит только числовые символы. | |
Возвращает , если все символы строки являются печатными или строка пустая, в противном случае возвращает . | |
Возвращает , если символы строки находятся в верхнем регистре, иначе . | |
Возвращает , если символы строки являются пробелами, иначе . | |
Возвращает , если строка имеет правильный заголовок, и в противном случае. Заголовок строки — это строка, в которой первый символ в верхнем регистре, а остальные символы в нижнем регистре. | |
Он объединяет строковое представление заданной последовательности. | |
Возвращает длину строки. | |
Возвращает строки, заполненные пробелами, с исходной строкой, выровненной по левому краю до заданной ширины. | |
Он преобразует все символы строки в нижний регистр. | |
Удаляет все пробелы в строке, а также может быть использован для удаления определенного символа из строки. | |
Он ищет разделитель в строке и возвращает часть перед ним, сам разделитель и часть после него. Если разделитель не найден, возвращается кортеж в виде переданной строка и двух пустых строк. | |
Возвращает таблицу перевода для использования в функции . | |
Заменяет старую последовательность символов на новую. Если задано значение , то заменяются все вхождения. | |
Похож на , но обходит строку в обратном направлении. | |
Это то же самое, что и , но обходит строку в обратном направлении. | |
Возвращает строку с пробелами, исходная строка которой выровнена по правому краю на указанное количество символов. | |
Он удаляет все пробелы в строке, а также может быть использован для удаления определенного символа. | |
Он аналогичен функции , но обрабатывает строку в обратном направлении. Возвращает список слов в строке. Если разделитель не указан, то строка разделяется в соответствии с пробелами. | |
Разделяет строку в соответствии с разделителем . Строка разделяется по пробелу, если разделитель не указан. Возвращает список подстрок, скомпонованных с разделителем. | |
Он возвращает список строк в каждой строке с удаленной строкой. | |
Возвращает булево значение, если строка начинается с заданной строки между и . | |
Он используется для выполнения функций и над строкой. | |
Он инвертирует регистр всех символов в строке. | |
Он используется для преобразования строки в заглавный регистр, т.е. строка будет преобразована в . | |
Он переводит строку в соответствии с таблицей перевода, переданной в функцию . | |
Он преобразует все символы строки в верхний регистр. | |
Возвращает исходную строку, дополненную нулями минимального количества символов (параметр ); предназначена для чисел, сохраняет любой заданный знак (за вычетом одного нуля). | |
Ищет последнее вхождение указанной строки и разбивает строку на кортеж, содержащий три элемента (часть перед указанной строкой, саму строку и часть после нее). |
Примеры использования
Пример 1. Простое вхождение. Требуется найти позицию, на которой подстрока key входит в строку monkeys.
<?php $string = «monkeys»;
$substring = «key»;
$result = strpos($string, $substring);
// Значение $result — 3
?>
Пример 2. Отсутствие вхождений. Если изменить искомую строку на KEY, функция PHP strpos() не обнаружит совпадений, так как является регистрозависимой. Результатом будет булево значение false.
<?php $string = «monkeys»;
$substring = «KEY»;
$result = strpos($string, $substring);
echo($result === false);
?>
Пример 3. Вхождение на нулевой позиции
Важно использовать строгое равенство, проверяя результат работы функции, иначе можно получить некорректный результат
<?php $string = «lifehack»;
$substring = «life»;
$result = strpos($string, $substring);
if (!$result) {
echo «Нет вхождений»;
}
if ($result == false) {
echo «Нет вхождений»;
}
if ($result === false) {
echo «Нет вхождений»;
}
?>
Первые две проверки определят отсутствие вхождений, несмотря на то, что подстрока life входит в исходную строку lifehack.
Пример 4. Смещение начальной позиции с помощью параметра $offset.
<?php $string = «love-and-love»;
$substring = «love»;
$result1 = strpos($string, $substring);
$result2 = strpos($string, $substring, 3);
echo $result1; // 0
echo $result2; // 9
?>
После установки смещения, равного 3, поиск начинается с символа «e».
Сайты можно разделить на статические и динамические. После освоения HTML и CSS, которые позволяют сделать красивую визитку в интернете, многие задумываются, как создать динамический сайт на PHP. При этом верстальщик должен учитывать, что теперь он начинает изучать веб-программирование: принципы работы с сайтом будут отличаться. Одна из первых проблем, с которой сталкивается начинающий в PHP — работа со строками, их чтение и обработка.
Стоит отметить, что в PHP подразумевают большое количество методов, поэтому начинать их изучение стоит с самых простых манипуляций, таких как вывод строки, поиск, получение или замена подстроки, изменение регистра и возвращение длины строки. Многие функции плохо работают с кириллическими символами. Поэтому все примеры написаны на английском для наглядности. Для кириллических строк используются те же функции, но с префиксом mb_ (например, mb_strpos()). Прежде чем использовать аналоги, в php.ini необходимо раскомментировать строку;extension=php_mbstring.dll, просто убрав точку с запятой.
Работа со строками
Последнее обновление: 1.11.2015
Строки играют большую роль, задачи на парсинг строк довольно часто встречаются в PHP , поэтому рассмотрим некоторые базовые функции работы со строками.
Но прежде чем начать работу со строками, откроем файл php.ini и найдем в нем следующую строку:
;extension=mbstring
Раскомментируем ее, убрав точку с запятой. И так как у нас файл php.ini изменился, перезапустим веб-сервер Apache.
Подключение расширения mbstring позволит задействовать некоторые дополнительные функции для работы со строками, которые
в стандартном наборе PHP отсутствуют.
Функции strpos() и mb_strpos()
Функция возвращает позицию подстроки или символа $search в строке $str или значение , если
строка $str не содержит подстроки $search:
$input = 'This is the end'; $search = 'is'; $position = strpos($input, $search); // 2 if($position!==false) { echo "Позиция подстроки '$search' в строке '$input': $position"; }
При использовании этой функции надо учитывать, что индексация символов в строке начинается с нуля, поэтому позиция символа ‘T’ будет равна 0.
Поэтому сравнение будет работать некорректно, ведь false и 0 при сравнении и приведении к общему типу будут представлять одно и то же значение.
Поэтому в данном случае корректно использовать только операцию эквивалентности: или .
Теперь применим функцию на другом примере:
$input = 'Мама мыла раму'; $search = 'мы'; $position = strpos($input, $search); // 9
Неожиданно, но результатом функции будет число 9. Хотя мы видим, что истинная позиция подстроки ‘мы’ в исходной строке равна 5.
Все дело в том, что некоторые строковые функции не всегда корректно обрабатывают кириллические символы, и для них лучше использовать другую функцию —
mb_strpos():
$position = mb_strpos($input, $search); // 5
Функция strrpos()
Функция strrpos() во многом аналогична функции , только ищет позицию не первого, а последнего вхождения подстроки в строку:
$input = 'This is the end'; $search = 'is'; $position = strpos($input, $search); // 5
Но опять же данная функция не совсем корректно работает с кириллическими символами, поэтому нам надо использовать ее аналог — mb_strrpos():
$position = mb_strrpos($input, $search);
Функция trim()
Функция удаляет из строки начальные и конечные пробелы, а также управляющие символы ‘\n’, ‘\r’, ‘\t’:
$input = ' Мама мыла раму '; $input = trim($input);
Изменение регистра
Для перевода строки в нижний регистр используется функция strtolower:
$input = 'The World is Mine'; $input = strtolower($input);
Для перевода в нижний регистр строки с кириллическими символами можно использовать функцию mb_strtolower:
$input = mb_strtolower($input);
Для перевода строки в верхний регистр примеяются функции strtoupper()/mb_ strtoupper(),
которые работают аналогично.
Функция strlen()
Функция strlen() возвращает длину строки, то есть количество символов в ней:
$input = 'Hello world'; $num = strlen($input); echo $num;
Функция strlen() также некорректно работает с кириллицей, поэтому в этом случае лучше применять функцию mb_strlen():
$input = 'Мама мыла раму'; $num = mb_strlen($input); echo $num;
Получение подстроки
Применяя функцию , можно получить из одной строки ее определенную часть. Данная функция обрезает строку $str,
начиная c символа в позиции $start до конца строки. С помощью дополнительного необязательного параметра $length можно задать количество вырезаемых символов.
$input = 'The world is mine!'; $subinput1 = substr($input, 2); $subinput2 = substr($input, 2, 6); echo $subinput1; echo "<br />"; echo $subinput2;
Так как данная функция некорректно работает с кириллицей, то вместо нее следует применять функцию mb_substr(),
которая действует аналогично:
$input = 'Мама мыла раму'; $subinput1 = mb_substr($input, 2); $subinput2 = mb_substr($input, 2, 6);
Замена подстрок
Для замены определенной части строки применяется функция . Эта функция заменяет в строке $input все
вхождения подстроки $old на подстроку $new с учетом регистра:
$input = 'Мама мыла раму'; $input = str_replace("мы", "ши", $input); echo $input;
НазадВперед
extractAllGroupsHorizontal
Разбирает строку на фрагменты, соответствующие группам регулярного выражения . Возвращает массив массивов, где первый массив содержит все фрагменты, соответствующие первой группе регулярного выражения, второй массив — соответствующие второй группе, и т.д.
Замечание
Функция работает медленнее, чем функция .
Синтаксис
Аргументы
- — строка для разбора. Тип: String.
- — регулярное выражение, построенное по синтаксическим правилам re2. Выражение должно содержать группы, заключенные в круглые скобки. Если выражение не содержит групп, генерируется исключение. Тип: String.
Возвращаемое значение
Тип: Array.
Если в строке нет групп, соответствующих регулярному выражению , возвращается массив пустых массивов.
Пример
Запрос:
Результат:
Функция extractAllGroupsVertical
Классификация алгоритмов поиска подстроки в строке[править]
Сравнение — «чёрный ящик»править
Во всех алгоритмах этого типа сравнение является «чёрным ящиком» для программиста.
Преимущества:
позволяет использовать стандартные функции сравнения участков памяти (man *cmp(3)), которые, зачастую, оптимизированы под конкретное железо.
Недостатки:
не выдается точка, в которой произошло несовпадение.
По порядку сравнения паттерна в текстеправить
Прямойправить
Преимущества:
отсутствие регрессии на «плохих» данных.
Недостатки:
не самая хорошая средняя асимптотическая сложность.
Обратныйправить
Паттерн движется по тексту слева направо, но сравнение подстрок происходит справа налево.
Преимущества:
при несовпадении позволяет перемещать паттерн по строке сразу на несколько символов.
Недостатки:
производительность сильно зависит от данных.
Сравнение в необычном порядкеправить
Специфические алгоритмы, основанные, как правило, на некоторых эмпирических наблюдениях над словарём.
По количеству поисковых шаблоновправить
Сколько поисковых шаблонов может обработать алгоритм за один раз.
- один шаблон (англ. single pattern algorithms)
- конечное количество шаблонов (англ. finite set of patterns)
- бесконечное количество шаблонов (англ. infinite number of patterns) (см. Теория формальных языков)
Виды препроцессинга:
- Префикс-функция
- Z-функция
- Бор
- Суффиксный массив
Алгоритмы, использующие препроцессинг — одни из самых быстрых в этом классе.
Сравнение алгоритмов[править]
- — размер алфавита
- — длина текста
- — длина паттерна
- — размер ответа(кол-во пар)
- — суммарная длина всех паттернов
Название | Среднее | Худшее | Препроцессинг | Дополнительная память | Кол-во поисковых шаблонов | Порядок сравнения | Описание |
---|---|---|---|---|---|---|---|
Наивный алгоритм (Brute Force algorithm) | Single | Прямой | Сравнение — «чёрный ящик». Если достаточно мало по сравнению с , то асимптотика будет близкой к , что позволяет использовать его на практике в случаях, когда паттерн много меньше текста (например, Ctrl+F в браузерах) | ||||
Поиск подстроки в строке с помощью Z-функции | Single | Прямой | |||||
Алгоритм Рабина-Карпа (Karp-Rabin algorithm) | Single / Finite | Прямой | Данный алгоритм использует хэширование, что снижает скорость в среднем. Можно модифицировать для поиска нескольких паттернов | ||||
Алгоритм Кнута-Морриса-Пратта (Knuth-Morris-Pratt algorith) | Single | Прямой | Использует префикс-функцию | ||||
Алгоритм Колусси (Colussi algorithm) | Single | Прямой / Обратный | Оптимизация Алгоритма Кнута-Морриса-Пратта использует как прямой, так и обратный обход | ||||
Алгоритм Ахо-Корасик (Aho–Corasick string matching algorithm) | Finite | Прямой | Строит конечный автомат. Можно хранить таблицу переходов как индексный массив (array), а можно как Красно-черное дерево. В последнем случае уменьшится расход памяти, но ухудшится асимптотика | ||||
Алгоритм Shift-Or | — размер машинного слова | Single | Прямой | Использует тот факт, что в современных процессорах битовые сдвиг и или являются атомарными. Эффективен, если . Иначе деградирует и по памяти, и по сложности | |||
Алгоритм Бойера-Мура (Boyer-Moore algorithm) | Single | Обратный | Считается наиболее быстрым из алгоритмов общего назначения. Использует эвристики. Существует большое количество оптимизаций | ||||
Поиск подстроки в строке с помощью суффиксного массива (Suffix array) | Single | Прямой | Использует Суффиксный массив. Если использовать Largest common prefix (lcp), то можно уменьшить асимптотику до . Суффиксный массив можно строить стандартными способами или алгоритмом Карккайнена-Сандерса. Асимптотика приведена для построения суффиксного массива с помощью алгоритма Карккайнена-Сандерса | ||||
Поиск подстроки в строке с помощью суффиксного дерева (Suffix tree) | Single | Прямой | Позволяет выполнять поиск подстроки в строке за линейное время | ||||
Алгоритм Апостолико-Крочемора ( Apostolico-Crochemore algorithm) | Single | Прямой | В худшем случае выполнит сравнений. |
Замена слов в скобках php
Замена слов в скобках phpВ чем фишка!?Как это работает
Если напишу вот так : php в коде… либо css , то никаких квадратных скобок вы не увидите… смотри скрин ниже:
После обработки php скриптом, это будут обычные ссылки, слова в скобках были заменены на :
В первом случае с php:
<a href=»https://dwweb.ru/page?tema=PHP» target=»_blank»>php</a>
Во втором случае с css:
<a href=»https://dwweb.ru/page?tema=CSS» target=»_blank»>css</a>
Таких слов огромное количество и естественно, что запомнить их все невозможно, поэтому у меня есть кнопка, которая выводит все эти слова в других кнопках, и достаточно кнопку нажать — она вставляется с помощью скрипта js.
Эту картинку, скриншот, можно увеличить в отдельном окне нажмите по нему!здесь мелькает эта панельПродолжение:
Поскольку довольно редкий поисковый запрос… напишите — вам интересен этот скрипт?!
Поиск определенного сотрудника
Чтобы отобразить информацию об остальном персонале, которая передается через уникальное id внутри нашей ссылки, нужно добавить следующий код прямо после закрывающей фигурной скобки в скрипте letter, как показано ниже:
}//Окончание скрипта if(isset($_GET)){ $contactid=$_GET; //Подключение к базе данных $db=mysql_connect ("servername", "username", "password") or die ('Я не могу подключиться к базе данных, так как: ' . mysql_error()); //-select the database to use $mydb=mysql_select_db("yourDatabase"); //- Запрос к таблице базы данных $sql="SELECT * FROM Contacts WHERE ID=" . $contactid; //- Запустить запрос к функции mysql_query() $result=mysql_query($sql); //- Запуск цикла и сортировка результатов while($row=mysql_fetch_array($result)){ $FirstName =$row; $LastName=$row; $PhoneNumber=$row; $Email=$row; //- Вывести результат в массиве echo "<ul>n"; echo "<li>" . $FirstName . " " . $LastName . "</li>n"; echo "<li>" . $PhoneNumber . "</li>n"; echo "<li>" . "<a href=mailto:" . $Email . ">" . $Email . "</a></li>n"; echo "</ul>"; } }
Здесь мы изменили четыре фрагмента кода:
- Мы используем функцию isset(), и с ее помощью проверяем значение ID в массиве $_GET;
- Создаем переменную $contactid и инициализируем ее массивом $_GET;
- В таблице выделяем все, что отмечено звездочкой *. Звездочка – это сокращенное обозначение в SQL, которое означает «дайте мне все столбцы и строки из таблицы». Чтобы определить, какую информацию выводить, мы упоминаем переменную contactid в конце SQL-выражения;
- Выводим дополнительную информацию о каждом представителе персонала.
Сохраните файл search_byid.php и проверьте результат.
Обратите внимание, что наш функционал работает так, как и положено. При вводе имени или фамилии в поле, или при выборе буквы в качестве гиперссылки, отображаются только имена представителей персонала. Если навести курсор на ссылку, то в строке статуса можно увидеть уникальный ID
Если кликнуть по конкретному человеку, то адресная строка изменится, и отобразится дополнительная информация об этом сотруднике
Если навести курсор на ссылку, то в строке статуса можно увидеть уникальный ID. Если кликнуть по конкретному человеку, то адресная строка изменится, и отобразится дополнительная информация об этом сотруднике.