Php — strlen возвращает неверную длину строки, вызванную цитатой

Работа со строками

Последнее обновление: 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 "";
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;

НазадВперед

Arguments

Expression

The expression in which to search for the substring. If this argument is not a string, it is converted using IDL’s default formatting rules. If Expression is an array, the result is an array with the same structure, where each element contains the position of the substring within the corresponding element Expression. If Expression is an empty string, STRPOS returns the value -1.

Search_String

The substring to be searched for within Expression. If this argument is not a string, it is converted using IDL’s default formatting rules. If Search_String is an empty string, STRPOS returns the smaller of Pos or one less than the length of Expression.

Pos

The character position at which the search is begun. If Pos is omitted and the REVERSE_SEARCH keyword is not set, the search begins at the first character (character position 0). If REVERSE_SEARCH is set, the default is to start at the last character in the string. If Pos is less than zero, zero is used for the starting position.

Arguments

Expression

The expression in which to search for the substring. If this argument is not a string, it is converted using IDL’s default formatting rules. If Expression is an array, the result is an array with the same structure, where each element contains the position of the substring within the corresponding element Expression. If Expression is an empty string, STRPOS returns the value -1.

Search_String

The substring to be searched for within Expression. If this argument is not a string, it is converted using IDL’s default formatting rules. If Search_String is an empty string, STRPOS returns the smaller of Pos or one less than the length of Expression.

Pos

The character position at which the search is begun. If Pos is omitted and the REVERSE_SEARCH keyword is not set, the search begins at the first character (character position 0). If REVERSE_SEARCH is set, the default is to start at the last character in the string. If Pos is less than zero, zero is used for the starting position.

Другие решения

Строка может быть такой большой, как 2 Гб.Источник

16

К сожалению, они не указали, насколько это может быть больше.

2

Максимальная длина строковой переменной составляет всего 2 ГБ — (2 ^ (32-1) бит). Переменные могут быть адресованы на основе символов (8 бит / 1 байт), а адресация выполняется целыми числами со знаком, поэтому предел такой, какой он есть. Массивы могут содержать несколько переменных, каждая из которых соответствует предыдущему ограничению, но может иметь общий кумулятивный размер, вплоть до memory_limit, которому также подвержена строковая переменная.

2

Чтобы правильно ответить на этот вопрос, вы должны рассмотреть внутреннюю часть PHP или цель, для которой построен PHP.

Чтобы ответить на это с типичной точки зрения Linux на x86 …

Строки всегда имеют размер 2 ГБ, поскольку длина всегда составляет 32 бита, а бит теряется, поскольку использует int, а не uint. int нецелесообразен для длин более 2 ГБ, так как для него требуется приведение во избежание нарушения арифметики или сравнения «чем». Дополнительный бит, вероятно, используется для проверки переполнения.

Как ни странно, хеш-ключи могут внутренне поддерживать 4 ГБ, так как используется uint, хотя я никогда не проверял это. Хэш-ключи PHP имеют +1 к длине завершающего нулевого байта, который, насколько мне известно, игнорируется, поэтому для этого крайнего случая может потребоваться, чтобы он был без знака, а не для длинных ключей.

32-битная система может накладывать больше внешних ограничений.

Архив блога

  • ► 

    2018

    (2)

    • ► 

      апреля

      (1)

      ► 

      27 апр

      (1)

    • ► 

      февраля

      (1)

      ► 

      08 фев

      (1)

  • ► 

    2017

    (5)

    • ► 

      декабря

      (2)

      ► 

      13 дек

      (2)

    • ► 

      июля

      (1)

      ► 

      14 июл

      (1)

    • ► 

      марта

      (1)

      ► 

      22 мар

      (1)

    • ► 

      января

      (1)

      ► 

      23 янв

      (1)

  • ► 

    2016

    (7)

    • ► 

      декабря

      (1)

      ► 

      29 дек

      (1)

    • ► 

      октября

      (2)

      ► 

      26 окт

      (1)

      ► 

      13 окт

      (1)

    • ► 

      сентября

      (1)

      ► 

      26 сен

      (1)

    • ► 

      марта

      (1)

      ► 

      02 мар

      (1)

    • ► 

      февраля

      (1)

      ► 

      19 фев

      (1)

    • ► 

      января

      (1)

      ► 

      27 янв

      (1)

  • ► 

    2015

    (11)

    • ► 

      октября

      (1)

      ► 

      23 окт

      (1)

    • ► 

      сентября

      (1)

      ► 

      24 сен

      (1)

    • ► 

      июля

      (3)

      ► 

      14 июл

      (1)

      ► 

      13 июл

      (1)

      ► 

      10 июл

      (1)

    • ► 

      апреля

      (1)

      ► 

      23 апр

      (1)

    • ► 

      марта

      (2)

      ► 

      27 мар

      (1)

      ► 

      18 мар

      (1)

    • ► 

      февраля

      (1)

      ► 

      04 фев

      (1)

    • ► 

      января

      (2)

      ► 

      28 янв

      (1)

      ► 

      22 янв

      (1)

  • ► 

    2014

    (6)

    • ► 

      декабря

      (1)

      ► 

      18 дек

      (1)

    • ► 

      ноября

      (1)

      ► 

      10 ноя

      (1)

    • ► 

      сентября

      (1)

      ► 

      26 сен

      (1)

    • ► 

      июня

      (1)

      ► 

      03 июн

      (1)

    • ► 

      мая

      (1)

      ► 

      21 мая

      (1)

    • ► 

      февраля

      (1)

      ► 

      18 фев

      (1)

  • ► 

    2013

    (24)

    • ► 

      декабря

      (2)

      ► 

      17 дек

      (1)

      ► 

      12 дек

      (1)

    • ► 

      ноября

      (1)

      ► 

      08 ноя

      (1)

    • ► 

      октября

      (5)

      ► 

      29 окт

      (1)

      ► 

      28 окт

      (1)

      ► 

      15 окт

      (1)

      ► 

      04 окт

      (2)

    • ► 

      августа

      (2)

      ► 

      13 авг

      (1)

      ► 

      01 авг

      (1)

    • ► 

      июля

      (1)

      ► 

      07 июл

      (1)

    • ► 

      июня

      (6)

      ► 

      25 июн

      (1)

      ► 

      21 июн

      (1)

      ► 

      20 июн

      (1)

      ► 

      19 июн

      (1)

      ► 

      14 июн

      (1)

      ► 

      11 июн

      (1)

    • ► 

      мая

      (1)

      ► 

      06 мая

      (1)

    • ► 

      марта

      (2)

      ► 

      31 мар

      (1)

      ► 

      12 мар

      (1)

    • ► 

      февраля

      (2)

      ► 

      18 фев

      (1)

      ► 

      07 фев

      (1)

    • ► 

      января

      (2)

      ► 

      23 янв

      (1)

      ► 

      09 янв

      (1)

  • ► 

    2012

    (34)

    • ► 

      декабря

      (2)

      ► 

      03 дек

      (1)

      ► 

      01 дек

      (1)

    • ► 

      ноября

      (7)

      ► 

      25 ноя

      (1)

      ► 

      22 ноя

      (2)

      ► 

      15 ноя

      (1)

      ► 

      08 ноя

      (1)

      ► 

      03 ноя

      (1)

      ► 

      02 ноя

      (1)

    • ► 

      октября

      (1)

      ► 

      18 окт

      (1)

    • ► 

      сентября

      (4)

      ► 

      21 сен

      (1)

      ► 

      10 сен

      (3)

    • ► 

      августа

      (2)

      ► 

      25 авг

      (1)

      ► 

      22 авг

      (1)

    • ► 

      июля

      (2)

      ► 

      27 июл

      (1)

      ► 

      03 июл

      (1)

    • ► 

      июня

      (5)

      ► 

      12 июн

      (2)

      ► 

      11 июн

      (1)

      ► 

      08 июн

      (1)

      ► 

      07 июн

      (1)

    • ► 

      мая

      (10)

      ► 

      27 мая

      (1)

      ► 

      24 мая

      (2)

      ► 

      16 мая

      (1)

      ► 

      14 мая

      (2)

      ► 

      12 мая

      (1)

      ► 

      11 мая

      (1)

      ► 

      10 мая

      (2)

    • ► 

      января

      (1)

      ► 

      30 янв

      (1)

  • ► 

    2011

    (19)

    • ► 

      ноября

      (2)

      ► 

      30 ноя

      (1)

      ► 

      10 ноя

      (1)

    • ► 

      сентября

      (7)

      ► 

      23 сен

      (1)

      ► 

      13 сен

      (1)

      ► 

      12 сен

      (2)

      ► 

      09 сен

      (2)

      ► 

      01 сен

      (1)

    • ► 

      августа

      (4)

      ► 

      30 авг

      (1)

      ► 

      27 авг

      (1)

      ► 

      26 авг

      (1)

      ► 

      24 авг

      (1)

    • ► 

      июля

      (1)

      ► 

      25 июл

      (1)

    • ► 

      июня

      (1)

      ► 

      01 июн

      (1)

    • ► 

      апреля

      (2)

      ► 

      27 апр

      (1)

      ► 

      25 апр

      (1)

    • ► 

      марта

      (2)

      ► 

      29 мар

      (1)

      ► 

      19 мар

      (1)

  • ▼ 

    2010

    (59)

    • ► 

      декабря

      (3)

      ► 

      24 дек

      (1)

      ► 

      12 дек

      (1)

      ► 

      11 дек

      (1)

    • ► 

      ноября

      (5)

      ► 

      22 ноя

      (2)

      ► 

      13 ноя

      (2)

      ► 

      03 ноя

      (1)

    • ► 

      октября

      (3)

      ► 

      12 окт

      (1)

      ► 

      11 окт

      (1)

      ► 

      01 окт

      (1)

    • ► 

      сентября

      (3)

      ► 

      16 сен

      (1)

      ► 

      15 сен

      (2)

    • ► 

      августа

      (3)

      ► 

      28 авг

      (1)

      ► 

      17 авг

      (1)

      ► 

      02 авг

      (1)

    • ► 

      июля

      (4)

      ► 

      14 июл

      (1)

      ► 

      13 июл

      (1)

      ► 

      01 июл

      (2)

    • ▼ 

      июня

      (5)

      ► 

      29 июн

      (1)

      ► 

      23 июн

      (1)

      • ▼ 

        21 июн

        (1)

        Длина строки mb_strlen , utf-8 и русские буквы

      ► 

      17 июн

      (1)

      ► 

      11 июн

      (1)

  • ► 

    мая

    (4)

    ► 

    26 мая

    (1)

    ► 

    15 мая

    (1)

    ► 

    13 мая

    (1)

    ► 

    12 мая

    (1)

  • ► 

    апреля

    (9)

    ► 

    26 апр

    (1)

    ► 

    23 апр

    (1)

    ► 

    15 апр

    (3)

    ► 

    08 апр

    (1)

    ► 

    07 апр

    (2)

    ► 

    01 апр

    (1)

  • ► 

    марта

    (5)

    ► 

    30 мар

    (1)

    ► 

    15 мар

    (1)

    ► 

    09 мар

    (1)

    ► 

    08 мар

    (1)

    ► 

    05 мар

    (1)

  • ► 

    февраля

    (3)

    ► 

    22 фев

    (1)

    ► 

    18 фев

    (1)

    ► 

    17 фев

    (1)

  • ► 

    января

    (12)

    ► 

    27 янв

    (2)

    ► 

    24 янв

    (1)

    ► 

    18 янв

    (1)

    ► 

    14 янв

    (1)

    ► 

    06 янв

    (1)

    ► 

    05 янв

    (1)

    ► 

    04 янв

    (2)

    ► 

    02 янв

    (3)

  • ► 

    2009

    (8)

    • ► 

      декабря

      (3)

      ► 

      24 дек

      (1)

      ► 

      18 дек

      (1)

      ► 

      09 дек

      (1)

    • ► 

      ноября

      (1)

      ► 

      01 ноя

      (1)

    • ► 

      октября

      (1)

      ► 

      12 окт

      (1)

    • ► 

      июля

      (1)

      ► 

      29 июл

      (1)

    • ► 

      июня

      (1)

      ► 

      19 июн

      (1)

    • ► 

      апреля

      (1)

      ► 

      29 апр

      (1)

  • ► 

    2008

    (6)

    • ► 

      апреля

      (1)

      ► 

      26 апр

      (1)

    • ► 

      марта

      (1)

      ► 

      16 мар

      (1)

    • ► 

      февраля

      (2)

      ► 

      27 фев

      (1)

      ► 

      23 фев

      (1)

    • ► 

      января

      (2)

      ► 

      15 янв

      (1)

      ► 

      13 янв

      (1)

  • ► 

    2007

    (9)

    • ► 

      декабря

      (3)

      ► 

      18 дек

      (1)

      ► 

      17 дек

      (1)

      ► 

      05 дек

      (1)

    • ► 

      ноября

      (2)

      ► 

      29 ноя

      (1)

      ► 

      28 ноя

      (1)

    • ► 

      июля

      (4)

      ► 

      27 июл

      (1)

      ► 

      21 июл

      (1)

      ► 

      20 июл

      (1)

      ► 

      19 июл

      (1)

Инструкции и файлы

Файл Страниц Формат Размер Действие

Инструкция по эксплуатации

zip 5.43MB

Инструкция по эксплуатации

77 pdf 5.69MB

Инструкция по эксплуатации

77 pdf 7.09MB

Инструкция по эксплуатации

77 pdf 7.09MB

Краткое описание

Высочайшая эффективность печати по приемлемой цене.

Этот мощный принтер позволяет легко справляться с повседневной работой как при индивидуальном использовании, так и в масштабах рабочей группы. Компактная

и высокопроизводительная модель Xerox Phaser 3155 предлагает широкие возможности печати по весьма доступной цене.

Новые возможности офисной работы

• Скорость печати до 24 стр./мин. (A4) и малое время выхода первой страницы позволяют справиться с высочайшими рабочими нагрузками.

• Высокая четкость печати при разрешении 600 x 600 точек на дюйм

и до 1200 x 600 в режиме улучшенного качества изображения.

• Удобство подключения одного пользователя. Принтер Phaser 3155 подключаются посредством интерфейса USB.

• Широчайший диапазон функций, включая режимы печати водяных знаков*, наложений*, постеров и брошюр (вручную)* позволяет реализовать большее количество проектов.

• Безупречная конструкция и высокая производительность гарантируют особую надежность данного оборудования.

Удивительно низкая цена

• Больше возможностей и высокая производительность лазерного принтера по чрезвычайно низкой цене.

• Режим экономии потребляемой электроэнергии и соответствие стандартам Energy Star способствуют как сокращению расходов, так и защите окружающей среды.

• Экономия бумаги достигается за счет функции двусторонней печати* вручную и функции печати нескольких изображений на одной странице (N-up).

• Тонер-картриджи повышенной емкости и режим экономии тонера помогают сократить расходы на печать и снизить потребление расходных материалов. А функция отмены задания позволяет отказаться от печати ненужных материалов.

Именно то, что нужно

• Компактный дизайн отлично подходит для размещения на рабочем столе или в небольшом рабочем пространстве.

• Бесшумная работа принтера минимизирует шумовую нагрузку в небольших офисах.

• Печать в различных операционных системах, включая Windows, Linux и Macintosh.

• Благодаря большой емкости лотка для бумаги (250 листов) требуется меньше перерывов для загрузки бумаги. Встроенный лоток для бумаги уменьшает площадь, занимаемую принтером и сохраняет бумагу чистой.

• Многоцелевой лоток позволяет загружать отдельные листы бумаги нестандартного размера и материалы для печати различных типов, например, конверты, прозрачные пленки, открытки.

Характеристики

Устройство принтер
Тип печати черно-белая
Технология печати лазерная
Размещение настольный
Ресурс напечатаных страниц в месяц 15000
Максимальный формат A4
Максимальное разрешение для черно-белой печати 1200×600 dpi
Скорость печати 24 стр/мин (ч/б А4)
Время разогрева 18 с
Время выхода первого отпечатка 8 c (ч/б)
Подача бумаги 250 лист. (стандартная)
Вывод бумаги 80 лист. (стандартный)
Емкость лотка ручной подачи 1 лист.
Плотность используемой бумаги 60-163 г/м2
Возможность печати на карточках, пленках, этикетках, глянцевой бумаге, конвертах, матовой бумаге
Ресурс черно-белого картриджа 1500 страниц
Количество картриджей 1
Тип картриджа 108R00908, 108R00909(расш.)
Объем памяти 8 Мб, максимальный 8 Мб
Частота процессора 150 МГц
Интерфейсы USB 2.0
Поддержка Post Script нет
Поддержка ОС Windows, Linux, Mac OS
Минимальные системные требования Intel Pentium + 32 Mb RAM
Потребляемая мощность (при работе) 360 Вт
Потребляемая мощность (в режиме ожидания) 60 Вт
Уровень шума при работе 50 дБ
Уровень шума в режиме ожидания 26 дБ
Габариты (ШхВхГ) 360x230x389 мм
Вес устройства 7.46 кг

Keywords

REVERSE_OFFSET

Normally, the value of Pos is used as an offset from the beginning of the expression towards the end. Set REVERSE_OFFSET to use it as an offset from the last character of the string moving towards the beginning. This keyword makes it easy to position the starting point of the search at a fixed offset from the end of the string. If this keyword is set and Pos is not specified, STRPOS will return the value -1.

REVERSE_SEARCH

STRPOS usually starts at Pos and moves toward the end of the string looking for a match. If REVERSE_SEARCH is set, the search instead moves towards the beginning of the string.

Examples

Find the position of the string “fun” within the string “IDL is fun” and print the result by entering:

PRINT, STRPOS('IDL is fun', 'fun')

IDL prints:

   7

The REVERSE_SEARCH keyword to the STRPOS function makes it easy to find the last occurrence of a substring within a string. In the following example, we search for the last occurrence of the letter “I” (or “i”) in a sentence:

sentence = 'IDL is fun.'sentence = STRUPCASE(sentence)lasti = STRPOS(sentence, 'I', /REVERSE_SEARCH)PRINT, lasti

This results in:

4

Note that although REVERSE_SEARCH tells STRPOS to begin searching from the end of the string, the STRPOS function still returns the position of the search string from the beginning of the string (where 0 is the position of the first character).

ПримечанияRemarks

strlen интерпретирует строку как строку однобайтовых символов, поэтому ее возвращаемое значение всегда равно количеству байтов, даже если строка содержит многобайтовые символы.strlen interprets the string as a single-byte character string, so its return value is always equal to the number of bytes, even if the string contains multibyte characters. wcslen — это версия strlenдля расширенных символов; Аргумент wcslen является строкой расширенных символов, а число символов — в расширенных (двухбайтовых) символах.wcslen is a wide-character version of strlen; the argument of wcslen is a wide-character string and the count of characters is in wide (two-byte) characters. в противном случае wcslen и strlen ведут себя одинаково.wcslen and strlen behave identically otherwise.

Примечание о безопасности. Эти функции предполагают потенциальную угрозу, связанную с проблемой переполнения буфера.Security Note These functions incur a potential threat brought about by a buffer overrun problem. Проблемы переполнения буфера — это распространенный метод атак на системы, который приводит к несанкционированному повышению уровня прав.Buffer overrun problems are a frequent method of system attack, resulting in an unwarranted elevation of privilege. Дополнительные сведения см. в разделе Как избежать переполнения буфера.For more information, see Avoiding Buffer Overruns.

Сопоставления подпрограмм обработки обычного текстаGeneric-Text Routine Mappings

Подпрограмма TCHAR.HTCHAR.H routine _UNICODE и _MBCS не определены_UNICODE & _MBCS not defined _MBCS определено_MBCS defined _UNICODE определено_UNICODE defined
_tcslen_tcslen strlenstrlen strlenstrlen wcslenwcslen
_tcsclen_tcsclen strlenstrlen _mbslen_mbslen wcslenwcslen
_tcsclen_l_tcsclen_l strlenstrlen _mbslen_l_mbslen_l wcslenwcslen

_mbslen и _mbslen_l возвращают количество многобайтовых символов в строке многобайтовых символов, но не проверяют допустимость многобайтовых символов._mbslen and _mbslen_l return the number of multibyte characters in a multibyte-character string but they do not test for multibyte-character validity. _mbstrlen и _mbstrlen_l проверяют допустимость многобайтовых символов и распознают последовательности многобайтовых символов._mbstrlen and _mbstrlen_l test for multibyte-character validity and recognize multibyte-character sequences. Если строка, передаваемая в _mbstrlen или _mbstrlen_l , содержит недопустимый многобайтовый символ для кодовой страницы, функция возвращает значение-1 и устанавливает для функции возврата в еилсек.If the string passed to _mbstrlen or _mbstrlen_l contains an invalid multibyte character for the code page, the function returns -1 and sets errno to EILSEQ.

Выходное значение зависит от настройки категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale.The output value is affected by the setting of the LC_CTYPE category setting of the locale; see setlocale for more information. Версии этих функций без суффикса _l используют текущий языковой стандарт для данного поведения, зависящего от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта.The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead. Для получения дополнительной информации см. Locale.For more information, see Locale.

Examples

Find the position of the string “fun” within the string “IDL is fun” and print the result by entering:

PRINT, STRPOS('IDL is fun', 'fun')

IDL prints:

   7

The REVERSE_SEARCH keyword to the STRPOS function makes it easy to find the last occurrence of a substring within a string. In the following example, we search for the last occurrence of the letter “I” (or “i”) in a sentence:

sentence = 'IDL is fun.'sentence = STRUPCASE(sentence)lasti = STRPOS(sentence, 'I', /REVERSE_SEARCH)PRINT, lasti

This results in:

4

Note that although REVERSE_SEARCH tells STRPOS to begin searching from the end of the string, the STRPOS function still returns the position of the search string from the beginning of the string (where 0 is the position of the first character).

Keywords

REVERSE_OFFSET

Normally, the value of Pos is used as an offset from the beginning of the expression towards the end. Set REVERSE_OFFSET to use it as an offset from the last character of the string moving towards the beginning. This keyword makes it easy to position the starting point of the search at a fixed offset from the end of the string. If this keyword is set and Pos is not specified, STRPOS will return the value -1.

REVERSE_SEARCH

STRPOS usually starts at Pos and moves toward the end of the string looking for a match. If REVERSE_SEARCH is set, the search instead moves towards the beginning of the string.

Ссылка на основную публикацию