Содержание

Поиск символа в строке PHP с помощью strpos, preg_match и strstr

В этой статье рассматриваются различные методы поиска слова, символа или подстроки в тексте. Описываются преимущества и недостатки каждого метода.

Простейшим способом проверить, содержит ли строка определённое слово, является использование PHP функции strpos(). Она возвращает позицию первого вхождения подстроки в строке или FALSE, если соответствия не найдены. Поэтому можно сравнить значение, возвращаемое функцией strpos() с FALSE, чтобы проверить наличие подстроки. Пример:

$the_string = "Я на 5 лет старше тебя.";
$the_word = "лет";
$the_character = "Я";
$the_substring = "5 лет";

// Вывод — Слово "лет" есть в данной строке.
if (strpos($the_string, $the_word) !== false) {
  echo 'Слово "'.$the_word.'" есть в данной строке.';
}

// Вывод — Символ "Я" есть в данной строке.
if (strpos($the_string, $the_character) !== false) {
  echo ' Символ "'.$the_character.'" есть в данной строке.';
}

// Вывод — Подстрока "5 лет" есть в данной строке. 
if (strpos($the_string, $the_substring) !== false) {
  echo 'Подстрока "'.$the_substring.'" есть в данной строке.';
}

Обратите внимание, что я использовал оператор строгого неравенства (!==). Если искомое слово встречается в начале строки, функция strpos() вернёт 0. Это будет расценено оператором != как значение FALSE. Пример:

// Вывод — Символа "Я" нет в данной строке.
if (strpos($the_string, $the_character) != false) {
  echo 'Символ "'.$the_character.'" есть в данной строке.';
} else {
  echo 'Символа "'.$the_character.'" нет в данной строке.';
}

При поиске целого слова (например, “на”) функция также вернёт значение TRUE, если строка содержит такие слова, как “она”, “вена” или “например”.

Также можно использовать > -1 вместо !==. Потому что даже если strpos() вернёт 0 как значение индекса, он всё равно будет больше -1. Но помните, что оператор «больше» (>) работает медленнее оператора строгого неравенства (!==).

Для регистрозависимого поиска можно использовать функцию stripos(). Она работает аналогично функции strpos(). Единственное отличие заключается в том, что она игнорирует регистр при поиске подстроки внутри другой строки.

$the_string = "Ваня любит и яблоки, и апельсины.";
$the_word  = "ваня";
$the_character = "Я";
$the_substring = "ЛЮбИт И";

// Вывод — Слово "ваня" есть в данной строке.
if (stripos($the_string, $the_word) !== false) {
  echo 'Слово "'.$the_word.'" есть в данной строке.';
}

// Вывод — Символ "Я" есть в данной строке.
if (stripos($the_string, $the_character) !== false) {
  echo 'Символ "'.$the_character.'" есть в данной строке.';
}

// Вывод — Подстрока "ЛЮбИт И" есть в данной строке.
if (stripos($the_string, $the_substring) !== false) {
  echo 'Подстрока "'.$the_substring.'" есть в данной строке.';
}

Функция strpos() вернула бы значение FALSE во всех перечисленных выше случаях. Но функция stripos() проигнорировала регистр и вернула значение TRUE.

Другим способом поиска, независящим от регистра, является преобразование всех строк и подстрок в одинаковый регистр, используя функции strtolower() и strtoupper(). Для проверки можно использовать strpos(). Но проще stripos().

Также для поиска можно использовать регулярные выражения. Они лучше подходят для случаев, когда вы ищете в строке более сложные конструкции.

Но помните, что функция strpos() работает в три раза быстрее, чем регулярные выражения. Следующий пример демонстрирует, как с их помощью найти слово, символ в строке:

$the_string = "Я на 5 лет старше тебя.";
$the_word  = "лет";
$the_character = "Я";
$the_substring = "5 лет";

// Вывод — Слово "лет" есть в данной строке.
if (preg_match('/лет/', $the_string)) {
  echo 'Слово "'.$the_word.'" есть в данной строке.';
}

// Вывод — Символ "Я" есть в данной строке.
if (preg_match('/Я/', $the_string)) {
  echo 'Символ "'.$the_character.'" есть в данной строке.';
}

// Вывод — Подстрока "5 лет" есть в данной строке.
if (preg_match('/5 лет/', $the_string)) {
  echo 'Подстрока "'.$the_substring.'" есть в данной строке.';
}

Использование функции preg_match() имеет смысл только при сложном поиске. Например, для проверки того, содержит ли строка слова с десятью и более символами и т.п. Пример:

$the_string = 'Фотосинтез и рискованный – длинные слова.';

// Вывод — Данная строка содержит слова из 10 и более символов.
if (preg_match('/w{10,}/i', $the_string)) {
  echo 'Данная строка содержит слова из 10 и более символов.';
}

Чтобы сделать поиск регистронезависимым, добавьте флаг i в конец шаблона. Пример реализации:

$the_string = "Ваня любит и яблоки, и апельсины.";
$the_word  = "ваня";
$the_character = "Я";
$the_substring = "ЛЮбИт И";

// Вывод — Слово "ваня" есть в данной строке.
if (preg_match('/ваня/i', $the_string)) {
  echo 'Слово "'.$the_word.'" есть в данной строке.';
}

// Вывод — Символ "Я" есть в данной строке.
if (preg_match('/Я/i', $the_string)) {
  echo 'Символ "'.$the_character.'" есть в данной строке.';
}

// Вывод — Подстрока "ЛЮбИт И" есть в данной строке.
if (preg_match('/ЛЮбИт И/i', $the_string)) {
  echo 'Подстрока "'.$the_substring.'" есть в данной строке. ';
}

Функции strpos() и stripos()работают быстрее, чем регулярные выражения. Но их использование для поиска точного вхождения слова может быть проблематичным.

В подобных ситуациях лучше применять регулярные выражения. Можно использовать выражение b в шаблоне регулярного выражения, чтобы обозначить границу слова. Если слово, которое вы ищете, заключено в выражения b, функция preg_match() найдёт только точные вхождения слова и вернет FALSE для частичных совпадений. Вот пример:

$the_string = 'Фотосинтез и рискованный – длинные слова.';
$the_word = 'синтез';

// Вывод — Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]
if (preg_match('/синтез/', $the_string)) {
  echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]';
}

// Вывод — Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]
if (strpos($the_string, $the_word)) {
  echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]';
}

// Вывод — Слово "синтез" не имеет точных совпадений в данной строке.  [Ожидаемый Результат]
if (preg_match('/bсинтезb/', $the_string)) {
  echo 'Слово "синтез" имеет точное совпадение в данной строке. [ЛОЖНО положительный]';
} else {
  echo 'Слово "синтез" не имеет точных совпадений в данной строке. [Ожидаемый Результат]';
}

PHP функция strstr() может быть использована для проверки вхождения символа или подстроки. Она возвращает часть исходной строки, начиная с первого вхождения искомого слова и до конца. Функция вернёт значение FALSE, если подстрока не найдена. Благодаря этому можно проверить, содержит ли строка подстроку. Вот пример:

$the_string = "Я на 5 лет старше тебя.";
$the_word  = "лет";
$the_character = "Я";
$the_substring = "5 лет";

// Вывод — Слово "лет" есть в данной строке.
if (strstr($the_string, $the_word) !== false) {
  echo 'Слово "'.$the_word.'" есть в данной строке.';
}

// Вывод — Символ "Я" есть в данной строке.
if (strstr($the_string, $the_character) !== false) {
  echo 'Символ "'.$the_character.'" есть в данной строке. ';
}

// Вывод — Подстрока "5 лет" есть в данной строке.
if (strstr($the_string, $the_substring) !== false) {
  echo 'Подстрока "'.$the_substring.'" есть в данной строке.';
}

Для регистронезависимого поиска используйте функцию stristr().

Краткое резюме

  1. Лучший метод поиска символа или слова в строке – PHP функции strpos(). Если нужно провести регистронезависимый поиск, применяйтеstripos(). Обе функции просты в использовании и работают быстрее остальных методов.
  2. Для сложного поиска используйте регулярные выражения. Вы также можете применять их для простого поиска, но они работают медленнее, чем функция strpos().
  3. Регулярные выражения полезны, когда вы ищете точное вхождение слова. Например, при поиске слова “сто” функция strpos() также вернёт значение TRUE, если строка содержит слово “Место”. С другой стороны, можно использовать выражение b в функции preg_match(), которая в таком случае возвратит FALSE.
  4. Используйте strstr() для регистрозависимого поиска и stristr() для регистронезависимого.

Пожалуйста, оставляйте ваши комментарии по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, подписки, отклики, лайки, дизлайки!

Данная публикация является переводом статьи «Best way to check if a string contains a specific word or substring in PHP» , подготовленная редакцией проекта.

Функции для обработки строк в PHP





















































chrВозвращает символ по его коду ASCII
chunk_splitРазбивает строку на подстроки заданной длины
cryptЗашифровывает строку с использованием одного из алгоритмов
echoВыводит одну или несколько строк
explodeРазбивает строку на подстроки, ограниченные заданным разделителем, и форматирует из них массив
html_entity_decodeДекодирует все HTML-представления в соответствующие символы. Функция обратно по отношению к htmlentites
htmlentitesКодирует все специальные символы в их HTML-представление
htmlspecialcharsКодирует все символы в их HTML-представление
implodeФормирует строку из элементов массива
ltrimУдаляет начальные пробелы из строки
rtrimУдаляет конечные пробелы из строки
number_formatПредставляет число в виде строки в различных форматах
ordВозвращает ASCII-код символа
parse_strРазбивает строку URL и присваивает значение переменным
printВыводит строку
printfВыводит строку с форматированием
sprintfВозвращает строку с форматированием
setlocaleУстанавливает информацию о кодовой странице
similar_textВычисляет степень похожести двух строк
sscanfРазбивает строку по шаблону и присваивает полученные значения переменным
str_ireplaceТо же самое, что и str_replace, но без учета различий в регистре символов
str_padДополняет строку до заданной длины другой строкой
str_repeatПовторяет строку заданное количество раз
str_replaceИщет в строке все вхождения подстроки и меняет на заданную строку
str_shuffleСлучайным образом перемешивает все символы в строке
str_splitФормирует массив из символов строки
str_word_countПодсчитывает количество слов в строке
strcasecmpВыполняет побайтовое сравнение строк без учета регистра символов
strchtТо же самое что strstr
strcmpВыполняет побайтовое сравнение строк с учетом регистра символов
strip_tagsУдаляет из строки все HTML-и PHP-теги
striposИщет первое вхождение подстроки в строке без учета регистра символов
stristrТо же самое что strstr, но без учета регистра символов
strlenВозвращает длину строки
strnatcasecmpТо же самое что strnatcmp, но без учета регистра символов
strncmpВыполняет побайтовое сравнение первых n символов строк
strposИщет первое вхождение подстроки в строке
strrchrИщет последнее вхождение символа в строке
strrevИнвертирует строку — прочитывает ее справа налево
strriposИщет последнее вхождение подстроки в строке без учета регистра символов
strrposИщет последнее вхождение подстроки в строке
strspnВозвращает длину участка строки, состоящего из заданных символов
strstrВозвращает часть строки от первого вхождения подстроки до конца
strtolowerПреобразует прописные буквы в строчные
strtoupperПреобразует строчные буквы в прописные
strtrПреобразует заданные символы в строке
substr_compareСравнивает две строки, начиная с заданного смещения
substr_countПодсчитывает, сколько раз заданная подстрока встречается в строке
substr_replaceИщет в заданном участке строки все вхождения подстроки и меняет на другую строку
substrВозвращает заданную часть исходной строки
trimУдаляет начальные и конечные пробелы из строки
ucfirstПреобразует первую букву строки в прописную

Строки.

Конкатенация, обработка переменных в строках

Значениями типа string являются текстовые строки (кратко строки). Строка — это последовательность из нуля или более символов. Символы включают в себя буквы, цифры, знаки пунктуации, специальные символы и пробелы.

Строка может быть определена четырьмя различными способами:

  • двойными кавычками
  • одинарными кавычками
  • heredoc-синтаксисом
  • nowdoc-синтаксисом

Строка в двойных кавычках

Строка в двойных кавычках:


$str = "Строка";

echo "Одну большую строку можно
      разбить на несколько маленьких строк,
      чтобы её было удобнее читать.";

В строках с двойными кавычками можно использовать управляющие последовательности. Управляющая последовательность — это специальные символы предназначенные для форматирования текстового вывода. В PHP доступны следующие управляющие последовательности:








ПоследовательностьЗначение
\nПеревод на новую строку (шестнадцатеричный код 0A).
\tГоризонтальная табуляция (шестнадцатеричный код 09).
\\Обратная косая черта (обратный слэш).
\$Знак доллара.
\"Двойная кавычка.
\xXXСимвол, заданный одной или двумя шестнадцатеричными цифрами.

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


$num = 10;
echo "Число: $num <br> Знак доллара: \$";

Строки, заключённые в двойные кавычки, могут содержать символы одинарных кавычек:


echo "Одинарная кавычка: '";

Строка в одинарных кавычках (апострофах)

Строка в одинарных кавычках:


$str = 'Строка';

echo 'Одну большую строку можно
      разбить на несколько маленьких строк,
      чтобы её было удобнее читать. ';

В отличие от строк в двойных кавычках и heredoc-синтаксиса, переменные и управляющие последовательности (за одним исключением), заключённые в одинарные кавычки, не обрабатываются. Это означает, что они будут интерпретированы как обычные символы строки:


$num = 10;
echo 'Число: $num <br> Знак доллара: \$';

Чтобы в строке, заключённой в одинарные кавычки, можно было использовать одинарные кавычки, нужно их экранировать с помощью обратного слэша (\'). Если необходимо написать саму обратную косую черту, нужно продублировать её (\\):


echo 'Внутри используются \'одинарные\' кавычки';
echo 'Обратный слэш: \\';

Строки, заключённые в одинарные кавычки, могут содержать символы двойных кавычек:


echo 'Двойная кавычка: "';

Heredoc-синтаксис

Heredoc-синтаксис — это альтернативный способ записи строк.

Строка, определяемая с помощью Heredoc-синтаксиса, работает также, как и строка, расположенная в двойных кавычках. Разница между Heredoc и строкой в двойных кавычках заключается в том, что используя Heredoc нет необходимости экранировать двойные кавычки.

Heredoc-синтаксис начинается с трёх символов <<<, после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. Сразу после идентификатора должен следовать перевод на новую строку, никаких других символов кроме перевода на новую строку после идентификатора не должно быть, иначе возникнет ошибка. Далее идёт непосредственно строковое содержимое. После строкового содержимого, на отдельной строке, должен быть указан закрывающий идентификатор (тот же, что и после <<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:


<<<some_id
Hello
  "World!"
some_id;

$num = 10;
echo <<<"other_id"
Число: $num
other_id;

Nowdoc-синтаксис

Nowdoc-синтаксис также как и Heredoc является альтернативным способом записи строк.

Строка, определяемая с помощью Nowdoc-синтаксиса, работает также, как и строка, расположенная в одинарных кавычках. Разница между Nowdoc и строкой в одинарных кавычках заключается в том, что используя Nowdoc нет необходимости экранировать одинарные кавычки.

Синтаксис Nowdoc похож на Heredoc с той лишь разницей, что открывающий идентификатор обязательно должен быть заключён в одинарные кавычки:


$num = 10;
echo <<<'some_id'
Число: $num
some_id;

Обработка переменных в строках

Существует два типа синтаксиса обработки переменных в строках: простой и сложный.

Простой синтаксис — это когда имя переменной указывается в строке как есть.

Когда интерпретатор встречает знак доллара, он начинает последовательно проверять являются ли все последующие символы допустимыми символами в имени переменной. Таким образом, чтобы сформировать правильное имя переменной, он захватывает так много символов, на сколько это возможно:


$str = "World!";
echo "Hello $str";

Сложный синтаксис — это когда имя переменной заключается в фигурные скобки.

Так как, для обработки переменной в строке, интерпретатор захватывает так много символов, на сколько это возможно бывают ситуации когда интерпретатор не способен самостоятельно определить, где оканчивается имя переменной:


$sport1 = 'волей';
$sport2 = 'фут';

echo "Мне нравится $sport1бол и $sport2бол";

В данном случае не будет достигнут желаемый результат, поскольку интерпретатор будет считать $sport1 как часть имени переменной $sport1бол, которой не существует.

Чтобы явно указать интерпретатору, где оканчивается имя переменной требуется заключить имя переменной в фигурные скобки:


$sport1 = 'волей';
$sport2 = 'фут';

echo "Мне нравится {$sport1}бол и {$sport2}бол.";

Знак доллара может быть расположен как перед фигурной скобкой, так и после неё:


$sport1 = 'волей';
$sport2 = 'фут';

echo "Мне нравится ${sport1}бол и {$sport2}бол. ";

Конкатенация

Конкатенация — это объединение двух или более строк в одну большую. Объединение происходит с помощью оператора конкатенации — . (точка). При конкатенации каждая последующая строка добавляется в конец предыдущей:


<?php
echo 'Из двух строк ' . 'делаем одну большую';
?>

Значение любого типа, которое объединяется со строкой, будет неявно преобразовано в строку и далее будет произведена конкатенация:


<?php
$str = "Число: ";
$num = 12;

echo $str . $num . '<br>';
echo 'Число: ' . 1;
?>

С этой темой смотрят:

PHP — Регулярные выражения — CoderLessons.com

Регулярные выражения — это не что иное, как последовательность или последовательность символов. Они обеспечивают основу для сопоставления с образцом.

Используя регулярное выражение, вы можете искать определенную строку внутри другой строки, вы можете заменить одну строку другой строкой и разбить строку на множество фрагментов.

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

  • POSIX регулярные выражения
  • Регулярные выражения в стиле PERL

POSIX регулярные выражения

Структура регулярного выражения POSIX не отличается от структуры типичного арифметического выражения: различные элементы (операторы) объединяются для формирования более сложных выражений.

Самое простое регулярное выражение — это выражение, которое соответствует одному символу, например g, внутри строк, таких как g, haggle или bag.

Давайте объясним несколько понятий, используемых в регулярном выражении POSIX. После этого мы познакомим вас с функциями, связанными с регулярными выражениями.

Скобки

Скобки ([]) имеют особое значение при использовании в контексте регулярных выражений. Они используются, чтобы найти диапазон символов.

Sr.No Выражение и описание
1

[0-9]

Соответствует любой десятичной цифре от 0 до 9.

2

[AZ]

Соответствует любому символу из строчных букв от a до строчных z.

3

[AZ]

Соответствует любому символу от прописной буквы A до прописной буквы Z.

4

[Az]

Соответствует любому символу из строчных букв от A до Z.

[0-9]

Соответствует любой десятичной цифре от 0 до 9.

[AZ]

Соответствует любому символу из строчных букв от a до строчных z.

[AZ]

Соответствует любому символу от прописной буквы A до прописной буквы Z.

[Az]

Соответствует любому символу из строчных букв от A до Z.

Указанные выше диапазоны являются общими; Вы также можете использовать диапазон [0-3], чтобы соответствовать любой десятичной цифре в диапазоне от 0 до 3, или диапазон [bv], чтобы соответствовать любому символу в нижнем регистре в диапазоне от b до v.

Кванторы

Частота или положение последовательностей символов в скобках и отдельных символов могут быть обозначены специальным символом. Каждый специальный символ имеет определенную коннотацию. +, *,?, {Int. range} и $ flags все следуют за последовательностью символов.

Sr.No Выражение и описание
1

р +

Соответствует любой строке, содержащей хотя бы один p.

2

п*

Это соответствует любой строке, содержащей ноль или более p.

3

п?

Это соответствует любой строке, содержащей ноль или один р.

4

p { N }

Соответствует любой строке, содержащей последовательность из N p

5

р {2,3}

Соответствует любой строке, содержащей последовательность из двух или трех символов p. . {2} $

Соответствует любой строке, содержащей ровно два символа.

<б> (. *) </ B>

Соответствует любой строке, заключенной в <b> и </ b>.

р (л.с.) *

Он соответствует любой строке, содержащей ap, за которой следует ноль или более экземпляров последовательности php.

Предопределенные диапазоны символов

Для вашего удобства программирования доступно несколько предопределенных диапазонов символов, также известных как классы символов. Классы символов задают весь диапазон символов, например, алфавит или набор целых чисел —

Sr.No Выражение и описание
1

[[:альфа:]]

Соответствует любой строке, содержащей буквенные символы от aA до zZ.

2

[[: цифры:]]

Соответствует любой строке, содержащей числовые цифры от 0 до 9.

3

[[цифра , буква]]

Соответствует любой строке, содержащей буквенно-цифровые символы от aA до zZ и от 0 до 9.

4

[[:пространство:]]

Соответствует любой строке, содержащей пробел.

[[:альфа:]]

Соответствует любой строке, содержащей буквенные символы от aA до zZ.

[[: цифры:]]

Соответствует любой строке, содержащей числовые цифры от 0 до 9.

[[цифра , буква]]

Соответствует любой строке, содержащей буквенно-цифровые символы от aA до zZ и от 0 до 9.

[[:пространство:]]

Соответствует любой строке, содержащей пробел.

Функции PHP в регулярных выражениях POSIX

В настоящее время PHP предлагает семь функций для поиска строк с использованием регулярных выражений в стиле POSIX —

Sr.No Описание функции
1 EREG ()

Функция ereg () ищет строку, указанную в строке, для строки, заданной шаблоном, возвращает true, если шаблон найден, и false в противном случае.

2 ereg_replace ()

Функция ereg_replace () ищет строку, указанную шаблоном, и заменяет шаблон заменой, если она найдена.

3 eregi ()

Функция eregi () ищет в строке, указанной шаблоном, строку, указанную в строке. Поиск не чувствителен к регистру.

4 eregi_replace ()

Функция eregi_replace () работает точно так же, как ereg_replace (), за исключением того, что поиск шаблона в строке не чувствителен к регистру.

5 Трещина()

Функция split () разделит строку на различные элементы, границы каждого элемента основаны на вхождении шаблона в строку.

6 spliti ()

Функция spliti () работает точно так же, как и ее функция split (), за исключением того, что она не чувствительна к регистру.

7 sql_regcase ()

Функцию sql_regcase () можно рассматривать как служебную функцию, преобразующую каждый символ в строке входного параметра в выражение в квадратных скобках, содержащее два символа.

Функция ereg () ищет строку, указанную в строке, для строки, заданной шаблоном, возвращает true, если шаблон найден, и false в противном случае.

Функция ereg_replace () ищет строку, указанную шаблоном, и заменяет шаблон заменой, если она найдена.

Функция eregi () ищет в строке, указанной шаблоном, строку, указанную в строке. Поиск не чувствителен к регистру.

Функция eregi_replace () работает точно так же, как ereg_replace (), за исключением того, что поиск шаблона в строке не чувствителен к регистру.

Функция split () разделит строку на различные элементы, границы каждого элемента основаны на вхождении шаблона в строку.

Функция spliti () работает точно так же, как и ее функция split (), за исключением того, что она не чувствительна к регистру.

Функцию sql_regcase () можно рассматривать как служебную функцию, преобразующую каждый символ в строке входного параметра в выражение в квадратных скобках, содержащее два символа.

Регулярные выражения в стиле PERL

Регулярные выражения в стиле Perl похожи на их аналоги в POSIX. Синтаксис POSIX может использоваться практически взаимозаменяемо с функциями регулярных выражений в стиле Perl. Фактически, вы можете использовать любой из квантификаторов, представленных в предыдущем разделе POSIX.

Давайте объясним несколько понятий, используемых в регулярных выражениях PERL. После этого мы познакомим вас с функциями регулярного выражения.

Метасимволы

Мета-символ — это просто алфавитный символ, которому предшествует обратный слеш, который придает комбинации особое значение.

Например, вы можете искать большие суммы денег, используя метасимвол ‘\ d’: / ([\ d] +) 000 / , Здесь \ d будет искать любую строку числового символа.

Ниже приведен список метасимволов, которые можно использовать в регулярных выражениях стиля PERL.

Character		Description
.              a single character
\s             a whitespace character (space, tab, newline)
\S             non-whitespace character
\d             a digit (0-9)
\D             a non-digit
\w             a word character (a-z, A-Z, 0-9, _)
\W             a non-word character
[aeiou]        matches a single character in the given set
[^aeiou]       matches a single character outside the given set
(foo|bar|baz)  matches any of the alternatives specified

Модификаторы

Доступно несколько модификаторов, которые могут значительно упростить вашу работу с регулярными выражениями, например, чувствительность к регистру, поиск в нескольких строках и т. and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for clarity
g Globally finds all matches
cg Allows a search to continue even after a global match fails

PHP-регулярные функции, совместимые с PERL

PHP предлагает следующие функции для поиска строк с использованием Perl-совместимых регулярных выражений —

Функция preg_match () ищет в строке шаблон, возвращая true, если шаблон существует, и false в противном случае.

Функция preg_match_all () сопоставляет все вхождения шаблона в строке.

Функция preg_replace () работает так же, как ereg_replace (), за исключением того, что регулярные выражения можно использовать в шаблонах и входных параметрах замены.

Функция preg_split () работает точно так же, как split (), за исключением того, что регулярные выражения принимаются в качестве входных параметров для шаблона.

Функция preg_grep () ищет все элементы input_array, возвращая все элементы, соответствующие шаблону регулярного выражения.

Цитировать символы регулярного выражения

Регулярные выражения. Часть 1. Введение. Специальные символы., PHP

Наконец-то я добрался до этой статьи, в ней я попытаюсь с нуля рассказать про регулярные выражения в PHP. Для начала — что это такое?

Если в двух словах и понятным языком, то регулярные выражения — это метод, основанный на соответствии строки заданному шаблону.

Основы основ

Как я уже сказал, начну с самого нуля. Недаром же я пометил эту статью тегом «Начинающим».

А начинается всё со строки в PHP.

// создаем строку
$stroka = 'abcdefghijklmnopqrstuvwxyz0123456789';
 
// выводим строку
echo $stroka;

Если нам сперва нужно определить, находится ли abc внутри нашей строки, и только тогда вывести её, то попробуем сделать что-то подобное:

// та же самая строка 
$stroka = 'abcdefghijklmnopqrstuvwxyz0123456789';
 
if( preg_match("/abc/", $stroka) ) { // возвратит 1 в случае положительного результата (<code>abc</code> внутри строки)
	echo $stroka;
}

Код выше дан исключительно для примера, потому что это не самый оптимальный вариант поиска вхождения в строке, для этого лучше использовать PHP-функции strpos() или strstr().

Небольшое отступление про русские буквы

Хочу обратить ваше внимание, регулярные выражения PHP по умолчанию не поддерживают русские буквы и поэтому далеко не все примеры будут работать корректно, однако это легко исправляется модификатором /u (дальше всё объясню), который включает дополнительную функциональность: шаблон и строки станут обрабатываться как UTF-8 (доступно с версии PHP 4.1.0).

Подробно в следующем примере.

Верхний регистр букв

Символы верхнего и нижнего регистра — не одно и то же. Однако чувствительность к регистру можно отключить при помощи модификатора /i. Модификаторы добавляются в конце шаблона, смотрите пример:

<?php
// строку оставляем пока что ту же
$stroka = 'abcdefghijklmnopqrstuvwxyz0123456789';
 
if( preg_match("/ABC/i", $stroka) ) { // возвратит 1, но если убрать i, то условие уже выполняться не будет
	echo $stroka;
}

А теперь то, о чём я упоминал выше — этот же самый пример не будет работать корректно с русскими буквами. абв/u», $stroka) ) {
echo ‘Строка начинается с абв’;
}

Проще простого, верно ведь?

Поиск соответствия концу строки. В чём отличие между \z и $

Вот тут уже интереснее. Начну с того, что есть два «конца строки», один — это конец строковой переменной в целом, а другой — конец строки в тексте \n, то есть дальше текст продолжается, просто с новой строки.

Так вот, если вам нужны именно последние символы в строковой переменной, всегда используйте \z.

// обратите внимание, что после буквы "р" я добавил переход на новую строку
$stroka = 'абвгдеёжзиклмнопр\nстуфхцчшщъыьэюя';
 
if( preg_match("/юя\z/u", $stroka) ) {
	echo 'Текст оканчивается на "юя"';
} else {
	echo 'Соответствий не найдено.';
}

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

Вообще мы можем в предыдущем примере заменить \z на $ и он будет проверять соответствие последних символов в переменной, но если включить поддержку многострочного поиска модификатором /m, то символы \n в самой строке уже будут восприниматься как переход на новую строку в тексте (для непонятливых — нажатие клавиши Enter) и тогда условие станет верным для букв пр . а-д]/u», $stroka, $matches);
 
// элемент $matches[0] будет содержать массив(!) из соответствующих символов, каждый символ — отдельный элемент массива
foreach( $matches[0] as $symbol ) {
echo $symbol;
}
// в итоге получится еёжзиклмнопрстуфхцчшщъыьэюя

Фигурные скобки { }

Фигурные скобки позволяют указать, сколько раз должен быть представлен в строке символ (или набор символов), стоящий перед ними.

$stroka = 'PHP123'; 
 
echo preg_match("/PHP[0-9]{3}/", $stroka);

Точка .

Точка обозначает любой один символ, кроме переходов на новую строку \n или \r.

$stroka = 'этот маг';
 
// выведет 1, то есть совпадение найдено, но без флага /u работать как надо не будет
echo preg_match("/м.г/u", $stroka);

Астериск *

Звёздочка означает любое количество символа, стоящего перед ней (в том числе 0). Поясню на примере.

$stroka = 'php'; 
 
// будет выведена 1 как для "php", так для "pp", "phhp", "phhhhhhhp"
echo preg_match("/ph*p/", $stroka);

Плюс +

Плюс практически аналогичен звёздочке за одним единственным исключением — он не учитывает отсутствие символа, то есть, если взять предыдущий пример и строку pp, то будет выведен 0. (Привет|Здравствуй|Хай), мир/», $stroka, $matches);
 
foreach($matches as $key=>$value) {
echo $key.’->’.$value.'<br />’;
}
/*
В результате получим
0->Привет, мир
1->Привет
То есть первый элемент массива — это найденная подстрока, подходящая под шаблон, а второй — какое именно условие подошло.
*/

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Php проверка строки на символы

1-ый способ: поиск строки

Проверить наличие текста в абзаце можно через функцию strpos() , которая возвращает позицию указанного текста. Если текст не найден, то функция возвращает -1 .

Также можно указать третий параметр, который указывает, откуда начинать искать строку.

2-ой способ: регулярное выражение

Проверить наличие текста с помощью регулярных выражений можно через функцию preg_match() .

Если надо найти просто текст, как на примере выше, то из-за производительности лучше использовать функцию strpos() . Об этом также написано в официальной документации php.net/manual/ru/function.preg-match.php .

Для более сложных поиска текста можно использовать preg_match() .

В этой статье рассматриваются различные методы поиска слова, символа или подстроки в тексте. Описываются преимущества и недостатки каждого метода.

Использование strpos() для регистрозависимого поиска

Простейшим способом проверить, содержит ли строка определённое слово, является использование PHP функции strpos(). Она возвращает позицию первого вхождения подстроки в строке или FALSE, если соответствия не найдены. Поэтому можно сравнить значение, возвращаемое функцией strpos() с FALSE, чтобы проверить наличие подстроки. Пример:

Обратите внимание, что я использовал оператор строгого неравенства (!==). Если искомое слово встречается в начале строки, функция strpos() вернёт 0. Это будет расценено оператором != как значение FALSE. Пример:

При поиске целого слова (например, “на”) функция также вернёт значение TRUE, если строка содержит такие слова, как “она”, “вена” или “например”.

Также можно использовать > -1 вместо !==. Потому что даже если strpos() вернёт 0 как значение индекса, он всё равно будет больше -1. Но помните, что оператор «больше» (>) работает медленнее оператора строгого неравенства (!==).

Использование функции stripos() для регистронезависимого поиска

Для регистрозависимого поиска можно использовать функцию stripos(). Она работает аналогично функции strpos(). Единственное отличие заключается в том, что она игнорирует регистр при поиске подстроки внутри другой строки.

Функция strpos() вернула бы значение FALSE во всех перечисленных выше случаях. Но функция stripos() проигнорировала регистр и вернула значение TRUE.

Другим способом поиска, независящим от регистра, является преобразование всех строк и подстрок в одинаковый регистр, используя функции strtolower() и strtoupper(). Для проверки можно использовать strpos(). Но проще stripos().

Использование регулярных выражений

Также для поиска можно использовать регулярные выражения. Они лучше подходят для случаев, когда вы ищете в строке более сложные конструкции.

Но помните, что функция strpos() работает в три раза быстрее, чем регулярные выражения. Следующий пример демонстрирует, как с их помощью найти слово, символ в строке:

Использование функции preg_match() имеет смысл только при сложном поиске. Например, для проверки того, содержит ли строка слова с десятью и более символами и т.п. Пример:

Чтобы сделать поиск регистронезависимым, добавьте флаг i в конец шаблона. Пример реализации:

Использование регулярных выражений для поиска точного вхождения слова

Функции strpos() и stripos()работают быстрее, чем регулярные выражения. Но их использование для поиска точного вхождения слова может быть проблематичным.

В подобных ситуациях лучше применять регулярные выражения. Можно использовать выражение b в шаблоне регулярного выражения, чтобы обозначить границу слова. Если слово, которое вы ищете, заключено в выражения b, функция preg_match() найдёт только точные вхождения слова и вернет FALSE для частичных совпадений. Вот пример:

Использование strstr() для поиска подстроки

PHP функция strstr() может быть использована для проверки вхождения символа или подстроки. Она возвращает часть исходной строки, начиная с первого вхождения искомого слова и до конца. Функция вернёт значение FALSE, если подстрока не найдена. Благодаря этому можно проверить, содержит ли строка подстроку. Вот пример:

Для регистронезависимого поиска используйте функцию stristr().

  1. Лучший метод поиска символа или слова в строке – PHP функции strpos(). Если нужно провести регистронезависимый поиск, применяйтеstripos(). Обе функции просты в использовании и работают быстрее остальных методов.
  2. Для сложного поиска используйте регулярные выражения. Вы также можете применять их для простого поиска, но они работают медленнее, чем функция strpos().
  3. Регулярные выражения полезны, когда вы ищете точное вхождение слова. Например, при поиске слова “сто” функция strpos() также вернёт значение TRUE, если строка содержит слово “Место”. С другой стороны, можно использовать выражение b в функции preg_match(), которая в таком случае возвратит FALSE.
  4. Используйте strstr() для регистрозависимого поиска и stristr() для регистронезависимого.

Данная публикация представляет собой перевод статьи « Best way to check if a string contains a specific word or substring in PHP » , подготовленной дружной командой проекта Интернет-технологии.ру

Как проверить, чтобы строка содержала только цифры, буквы, -, или _ (без пробелов и иных символов?

1 ответ 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4. 0 с указанием ссылки на источник. rev 2019.11.15.35459

PHP string functions — functions-online (русский)

Execute and test PHP functions for string manipulation.

addslashes

Возвращает строку, в которой перед каждым спецсимволом добавлен обратный слэш, например, для последующего использования этой строки в запросе к базе данных и т.п. Экранируются одиночная кавычка (‘), двойная кавычка («), обратный слэш (\) и NUL (байт NULL).

bin2hex

Возвращает ASCII-строку, содержащую шестнадцатиричное представление аргумента $str. Преобразование производится побайтно, начиная с верхнего полубайта.

chr

Возвращает строку из одного символа, код которого задан аргументом $ascii.

chunk_split

Функция используется для разбиения строки на фрагменты, например, для приведения результата функции base64_encode() в соответствие с требованиями RFC 2045. Она вставляет строку $end после каждых $chunklen символов.

count_chars

Подсчитывает количество вхождений каждого из символов с ASII-кодами в диапазоне (0. .255) в строке $string и возвращает эту информацию в различных форматах.

explode

Возвращает массив строк, полученных разбиением строки $string с использованием $delimiter в качестве разделителя.

html_entity_decode

html_entity_decode() является противоположностью функции htmlentities(). Она преобразует все HTML-сущности в строке $string в соответствующие символы.

htmlentities

Эта функция идентична htmlspecialchars() за исключением того, что htmlentities() преобразует все символы в соответствющие HTML-сущности (для тех символов, для которых HTML сущности существуют).

htmlspecialchars

В HTML некоторые символы имеют специальное значение и для сохранения своего значения должны быть преобразованы в HTML-сущности. Эта функция возвращает строку, над которой проведены эти преобразования. Если вам нужно преобразовать все возможные сущности, используйте htmlentities().

Вызова функции htmlspecialchars() достаточно, если кодировка поддерживает все символы во входной строке (такая как UTF-8, но также ISO-8859-1 при входной только ISO-8859-1). Необходимость в вызове функции htmlentities() появляется только тогда, когда выходная кодировка не поддерживает все символы из входной строки.

implode

Объединяет элементы массива с помощью строки $glue.

levenshtein

Расстояние Левенштейна — это минимальное количество вставок, замен и удалений символов, необходимое для преобразования $str1 в $str2. Сложность алгоритма равна O(m*n), где n и m — длины строк $str1 и $str2 (неплохо по сравнению с similar_text(), имеющей сложность O(max(n,m)**3), но все же довольно много).

В простейшей форме функция принимает в качестве аргументов две строки и возвращает минимальное количество вставок, замен и удалений символов, необходимое для преобразования $str1 в $str2.

number_format

Функция принимает один, два или четыре аргумента (не три):

Если передан только один аргумент, $number будет отформатирован без дробной части, но с запятой («,») между каждыми тремя цифрами.

Если переданы два аргумента, $number будет отформатирован с $decimals знаками после точки («. «) и с запятой («,») между каждыми тремя цифрами.

Если переданы все четыре аргумента, $number будет отформатирован с $decimals знаками после точки и с разделителем между между каждыми тремя цифрами, при этом в качестве десятичной точки будет использован $dec_point, а в качестве разделителя групп — $thousands_sep.

ord

Возвращает ASCII-код первого символа строки $string. Эта функция дополняет функцию chr().

parse_str

Разбирает строку $str, которая должна иметь формат строки запроса URL и присваивает значения переменным в текущем контексте.

similar_text

Вычисляет степень похожести двух строк по алгоритму, описанному Oliver [1993]. Эта реализация алгоритма не использует стека, использованного в оригинале, вместо этого применяются рекурсивные вызовы, что в некоторых случаях может ускорить процесс. Сложность алгоритма составляет O(N**3), где N — длина более длинной из двух строк.

soundex

Возвращает ключ soundex для строки $str.

Двум словам, имеющим схожее произношение, соответствует один и тот же ключ soundex. Это свойство может быть использовано, например, при поиске по базе даных, когда известно произношение слова и неизвестно его написание. Данная функция возвращает строку из 4 символов, начинающуюся с буквы.

Данная реализация функции soundex описана Дональдом Кнутом (Donald Knuth) в книге «The Art Of Computer Programming, vol. 3: Sorting And Searching», Addison-Wesley (1973), стр. 391-392.

str_pad

Эта функция возвращает строку $input, дополненную слева, справа или с обоих сторон до заданной длины. Если необязательный аргумент $pad_string не передан, то $input будет дополнен пробелами, иначе он будет дополнен символами из $pad_string до нужной длины.

str_replace

Эта функция возвращает строку или массив, в котором все вхождения $search в $subject заменены на $replace.

Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace().

str_rot13

Выполняет над строкой $str преобразование ROT13 и возвращает полученную строку.

Преобразование ROT13 заключается в простом сдвиге каждой латинской буквы на 13 позиций в алфавите, остальные символы не изменяются. Обратное преобразование выполняется той же функцией, так как передача закодированной строки в качестве аргумента вернет ее оригинальную версию.

strip_tags

Эта функция пытается возвратить строку $str, из которой удалены все NUL-байты, HTML и PHP теги. Для удаления тегов используется тот же автомат, что и в функции fgetss().

stripos

Ищет позицию первого вхождения подстроки $needle в строку $haystack.

stristr

Возвращает всю строку $haystack начиная с первого вхождения $needle включительно.

strlen

Возвращает длину строки $string.

strncmp

Эта функция подобна strcmp(), за исключением того, что можно указать максимальное количество символов в обоих строках, которые будут участвовать в сравнении.

Эта функция учитывает регистр символов.

strpos

Ищет позицию первого вхождения подстроки $needle в строку $haystack.

strripos

Ищет позицию последнего вхождения подстроки $needle в строку $haystack.

strrpos

Ищет позицию последнего вхождения подстроки $needle в строку $haystack.

strstr

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

strtolower

Возвращает строку $string, в которой все буквенные символы переведены в нижний регистр.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C», символ ? не будет преобразован.

strtoupper

Возвращает строку $string, в которой все буквенные символы переведены в верхний регистр.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C», символ ? не будет преобразован.

strtr

Если указаны три аргумента, эта функция возвращает копию $str, в которой все вхождения каждого символа (однобайтного) из $from были заменены на соответствующий символ в параметре $to, т. е. каждое вхождение из $from[$n] заменяется на $to[$n], где $n это корректное смещение строки в обоих аргументах.

Если длины строк $from и $to отличаются, «лишние» символы в более длинной строке не используются. Длина возвращаемого значения будет такой же, как и длина $str.

substr

Возвращает подстроку строки $string, начинающейся с $start символа по счету и длиной $length символов.

substr_count

substr_count() возвращает число вхождений подстроки $needle в строку $haystack. Заметьте, что параметр $needle чувствителен к регистру.

Syllable Division

This script, devide string into their syllables. You will recieve an array with all syllables divided. This script is written and tested for german words.

The code was started by PHP-Blogger and was modified in details by myself. There are still some bugs.

trim

Эта функция возвращает строку $str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim() удаляет следующие символы:

  • » » (ASCII 32 (0x20)), обычный пробел.
  • «\t» (ASCII 9 (0x09)), символ табуляции.
  • «\n» (ASCII 10 (0x0A)), символ перевода строки.
  • «\r» (ASCII 13 (0x0D)), символ возврата каретки.
  • «\0» (ASCII 0 (0x00)), NUL-байт.
  • «\x0B» (ASCII 11 (0x0B)), вертикальная табуляция.

ucfirst

Возвращает строку $str, в которой первый символ переведен в верхний регистр, если этот символ является буквой.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C», символ ä не будет преобразован.

ucwords

Возвращает строку $str, в которой первый символ каждого слова переведен в верхний регистр, если этот символ является буквой.

Эта функция считает словами последовательности символов, разделенных пробельными символами, которыми являются пробел, разрыв страницы, перевод строки, возврат каретки, горизонтальная и вертикальная табуляция.

vsprintf

Эта функция подобна sprintf(), но она принимает не переменное число аргументов, а массив.

wordwrap

Переносит строку по указанному количеству символов.

php — Как проверить, содержит ли строка определенное слово?

Вы можете использовать регулярные выражения, так как это лучше для сопоставления слов по сравнению с strpos , как упоминали другие пользователи. strpos check for are также вернет true для таких строк, как: fare, care, stare и т. Д. Эти непреднамеренные совпадения можно просто избежать в регулярном выражении, используя границы слов.

Простое совпадение для и может выглядеть примерно так:

  $ a = 'Как дела?';

if (preg_match ('/ \ bare \ b /', $ a)) {
    echo 'true';
}
  

Что касается производительности, strpos примерно в три раза быстрее.Когда я сделал один миллион сравнений за один раз, для завершения preg_match потребовалось 1,5 секунды, а для strpos — 0,5 секунды.

Редактировать:
Чтобы искать в любой части строки, а не просто дословно, я бы рекомендовал использовать регулярное выражение, например

.

  $ a = 'Как дела?';
$ search = 'are y';
if (preg_match ("/ {$ search} / i", $ a)) {
    echo 'true';
}
  

i в конце регулярного выражения изменяет регулярное выражение на регистронезависимое. Если вы этого не хотите, вы можете не указывать его.

Теперь это может быть довольно проблематично в некоторых случаях, так как строка $ search никоим образом не дезинфицируется, я имею в виду, что в некоторых случаях она может не пройти проверку, как если бы $ search — это ввод пользователя, они могут добавить некоторые строка, которая может вести себя как другое регулярное выражение …

Кроме того, вот отличный инструмент для тестирования и просмотра объяснений различных регулярных выражений Regex101

Чтобы объединить оба набора функций в одну универсальную функцию (в том числе с возможностью выбора чувствительности к регистру), вы можете использовать что-то вроде этого:

  функция FindString ($ Need, $ haystack, $ i, $ word)
{// $ i должно быть "" или "i" без учета регистра
    если (strtoupper ($ word) == "W")
    {// если $ word равно "W", то поиск по слову вместо строкового поиска.если (preg_match ("/ \ b {$ игла} \ b / {$ i}", $ стог сена))
        {
            вернуть истину;
        }
    }
    еще
    {
        если (preg_match ("/ {$ Need} / {$ i}", $ haystack))
        {
            вернуть истину;
        }
    }
    вернуть ложь;
    // Поместите выше true и false в кавычки, чтобы вернуть их как строки, а не как bools / ints.
}
  

Еще одна вещь, которую следует иметь в виду, это то, что \ b не будет работать на других языках, кроме английского.

Объяснение этого и решение взято отсюда:

\ b представляет начало или конец слова (границы слова).Этот
регулярное выражение будет соответствовать яблоку в яблочном пироге, но не будет соответствовать яблоку в
ананас, тележки с яблоками или запеканки.

Как насчет «кафе»? Как мы можем извлечь слово «кафе» из регулярного выражения?
На самом деле \ bcafé \ b не сработает. Почему? Поскольку «кафе» содержит
не-ASCII-символ: é. \ b нельзя просто использовать с Unicode, например
समुद्र, 감사, месяц и 😉.

Если вы хотите извлечь символы Unicode, вы должны напрямую
определить символы, которые представляют границы слова.

Ответ: (? <= [\ S ,.) '. $ слово. '(? = [\ s,.:; "\'] | $) / ', $ str)) return true; } вернуть ложь; }

Начиная с PHP 8.0.0 теперь вы можете использовать str_contains

   

Как проверить, содержит ли строка подстроку в PHP

Строка - это последовательность символов, которая используется либо как буквальная константа, либо как какая-то переменная.Определенная часть строки называется подстрокой.

PHP предоставляет функцию strpos () для проверки, содержит ли строка определенную подстроку или нет. Функция strpos () возвращает позицию первого вхождения подстроки в строку. Если подстрока не найдена, на выходе возвращается false.

В этом руководстве представлены три примера, чтобы проверить, содержит ли строка подстроку или нет. Также вы можете проверить, находится ли подстрока в начале основной строки.

Пример 1.

Следующий код будет иметь значение true, поскольку основная строка $ str содержит в себе подстроку « This ». Будет напечатано «истина».

$ str = 'Это основная строка';

if (strpos ($ str, 'This')! == false) {

echo 'true';

}

?>

 Выход: true
 

Пример 2.

Следующий код будет иметь значение false, поскольку основная строка $ str не содержит в себе подстроки « Hello ». Это ничего не напечатает.

$ str = 'Это основная строка';

$ substr = "Привет";

if (strpos ($ str, $ substr)! == false) {

echo 'true';

}

?>

 Выход: нет
 

Пример 3.

Следующий код проверяет, содержит ли строка в начале подстроку. Следующий код будет иметь значение true, поскольку основная строка $ str содержит в начале подстроку « This ».

$ str = 'Это основная строка';

if (strpos ($ str, 'This') === 0) {

echo 'true';

}

?>

 Выход: true
 

Заключение

В этом руководстве вы научились проверять, содержит ли строка подстроку, с помощью языка программирования PHP.

Как удалить специальные символы из строки в PHP

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

Функция str_replace ()

Одной из полезных функций, которые можно использовать для удаления специальных символов из строки, является функция str_replace () .Пустая строка должна использоваться вместо символа замены в этой функции, чтобы удалить указанный символ. Синтаксис этой функции приведен ниже.

str_replace ($ search_str, $ replace_str, $ main_str [, $ count])

Функция str_replace () может принимать четыре аргумента. Первые три аргумента являются обязательными, а последний аргумент - необязательным. Переменная $ search_str хранит значение, которое будет искать в строке. Переменная $ replace_str хранит значение, которое будет заменено из строки, совпадающей с поисковым текстом.Вы должны использовать пустую строку в качестве значения переменной $ replace_str , чтобы удалить текст поиска из основной строки. Аргумент $ count хранит значение, представляющее, сколько символов заменено или удалено.

Пример: использование

str_replace () для удаления специальных символов

Следующий сценарий показывает использование функции str_replace () для удаления специального символа из строки данных. В сценарии объявляется определяемая пользователем функция для выполнения задачи замены.Хэш (#), одинарная кавычка (‘) и точка с запятой (;). символов используются в качестве символов поиска, а пустая строка используется как текст для замены этих символов.

/ * Следующий скрипт удалит некоторые

специальных символов из строки с помощью функции str_replace ()

* /

// Определите основную строку

$ mainstr = "# Это простой текст;";

// Вывод перед удалением

echo " Текст перед удалением:
".$ mainstr;

// Вызов функции

$ replacestr = rm_special_char ($ mainstr);

// Определите функцию для удаления пространственного символа

function rm_special_char ($ str) {

// Удалите "#", "'" и ";" с использованием функции str_replace ()

$ result = str_replace (array ("#", "'", ";"),' ', $ str);

// Вывод после удаления

echo "
Текст после удаления:
". $ Result;

}

?>

Выход

После выполнения приведенного выше сценария появится следующий вывод.Значение основного текста печатается перед вызовом функции str_replace () , а три специальных символа удаляются из основного текста и печатаются позже.

Функция preg_replace ()

Функция preg_replace () используется для замены строковых данных на основе шаблона поиска. Синтаксис этой функции приведен ниже.

preg_replace ($ pattern, $ replace, $ string [, $ limit [, $ count]])

Эта функция может принимать пять аргументов.Первые три аргумента являются обязательными, а последние два аргумента - необязательными. Аргумент $ pattern используется для определения шаблона для поиска символа (ов) в строке. Аргумент $ replace используется для определения текста замены, а текст замены будет пустой строкой, используемой для удаления специальных символов. Аргумент $ string используется для определения основной строки, в которой будет выполняться поиск и замена шаблона.

Пример: использование preg_replace () для удаления специальных символов

Следующий сценарий показывает использование функции preg_replace () для удаления определенного специального символа из строковых данных.Шаблон «[0-9 / [0-9% $?] / S» используется в функции для поиска символов. Будет произведен поиск всех символов ‘%,’ ‘$,’ и ‘?’ В строковых данных и их замена на пустую строку, если символы существуют.

/ * Следующий скрипт удалит некоторые

специальных символов из строки с помощью функции preg_replace ()

* /

// Определите основную строку

$ mainstr = "200 Мне нравится $ php программирование50% ?.";

// Вывод перед удалением

echo" Текст перед удалением:
". $ Mainstr;

// Вызов функции

$ replacestr = rm_special_char ($ mainstr);

// Определите функцию для удаления пространственного символа

function rm_special_char ($ str) {

// Удалите "#", "'" и ";" с помощью функции str_replace ()

$ result = preg_replace ('/ [0-9% $?] / S', '', $ str);

// Результат после удаления

echo »
Текст после удаления :
".$ результат;

}

?>

Выход

После запуска сценария появится следующий вывод. Значение основного текста будет напечатано перед вызовом функции preg_replace () . Символы 200, 50, «%» и «?» будут удалены из основного текста и напечатаны позже.

Функции

htmlspecialchars () и str_ireplace ()

Функции htmlspecialchars () и str_ireplace () используются для преобразования всех предопределенных символов в HTML.Например, « <» будет преобразовано в « & lt », « и » будет преобразовано в « & amp » и т. Д. Эти функции можно использовать для удаления эффекта любых предопределенных символов из строковые данные.

Пример: использование

htmlspecialchars () и str_ireplace () для удаления специальных символов

Следующий сценарий показывает, как удалить влияние предопределенных символов из строки с помощью функции htmlspecialchars () .Затем функция str_ireplace () используется для удаления объектов HTML из текста. Функция str_ireplace () работает как функция str_replace () , но может выполнять поиск без учета регистра. Основная строка содержит текст с тегами < h3 > и < b >. Таким образом, когда текст печатается до удаления эффекта предопределенных символов, строка будет отображаться с эффектом заголовка HTML и полужирных тегов. Простой текст будет отображаться после применения данных функций.

// Определите основную строку

$ mainstr = "

Добро пожаловать в

LinuxHint

";

// Вывод с HTML-тегами

echo «Текст перед удалением:». $ Mainstr;

// Вывод после удаления HTML-тегов

echo «Текст после удаления:
».

str_ireplace (array ('& lt; b & gt;', '& lt; / b & gt;', '& lt; h3 & gt;', '& lt; / h3 & gt;'), '',

htmlspecialchars ($ mainstr));

?>

Выход

После запуска сценария появится следующий вывод.

Функция trim ()

Функция trim () используется для удаления определенных символов из начала и конца строки данных. Эта функция не может удалять символы из середины строки данных. Таким образом, вы можете использовать эту функцию, только если вы хотите удалить специальные символы из начала и конца строки.

Пример: использование функции

trim () для удаления специальных символов

Следующий скрипт показывает использование функции trim () для удаления « @ » и «! ’символов от начала и конца строковой переменной $ mainstr .Значение переменной $ mainstr будет напечатано как до, так и после удаления символов.

// Определить основную строку

$ mainstr = "@@ Web Programming !!!.";

// Вывод перед использованием trim ()

echo " Текст перед удалением:
". $ Mainstr;

// Вывод после использования trim ()

echo "
Текст после удаления:
".обрезать ($ mainstr, '@!');

?>

Выход

После запуска сценария появится следующий вывод. Здесь два символа « @ » удалены с начала, а три символа «! ’удаляются из конца строковой переменной $ mainstr .

Заключение

В этом руководстве показано четыре различных способа удаления специальных символов из строковых данных. Я надеюсь, что это руководство поможет читателям применить функции, представленные в этой статье, в своем скрипте.

Используйте Is_String, чтобы проверить, является ли переменная строкой в ​​PHP

Функция is_string () PHP используется для проверки того, является ли тип переменной строкой. Строка - это тип данных, например, с плавающей запятой или целое число, но он представляет текст, а не числа. В строке используется набор символов, включающий пробелы и числа. Например, такой адрес, как «1234 Broadway» и предложение «Я съел 3 хот-дога», содержат числа, которые следует рассматривать как текст, а не как числа.

Как использовать функцию

Is_string используется в операторе if () для обработки строк одним способом, а не строк - другим.Возвращает истину или ложь. Например:

 if (is_string (23)) 
{
echo "Да";
} else {
echo "Нет";
}
?>

Приведенный выше код должен выводить «Нет», потому что 23 не является строкой. Попробуем еще раз:

 if (is_string ("Hello World")) 
{
echo "Yes";
} else {
echo "Нет";
}
?>

Поскольку «Hello World» - это строка, это будет эхом «Да».

Указание строки

Строку можно указать четырьмя способами:

  • Одинарные кавычки
  • Двойные кавычки
  • Синтаксис Heredoc
  • Синтаксис Nowdoc

Каждый из этих методов требует строгого соблюдения правил PHP, которые доступны на веб-сайте PHP.Самый простой метод - строки в одинарных кавычках - требует особой обработки, когда в строке появляются буквальные одинарные кавычки или буквальные обратные косые черты. Включите обратную косую черту перед одинарными кавычками или обратную косую черту в строке. Пример ниже иллюстрирует это лечение:

 // Вывод: Арнольд сказал: «Я вернусь» 
echo 'Арнольд сказал: «Я вернусь»';
// Вывод: я удалил C: \ *. *?
echo 'Я удалил C: \\ *. *?';
?>

Подобные функции

  • is_float () - определяет, является ли тип переменной float
  • is_int () - определяет, является ли тип переменной целым числом
  • is_bool () - определяет, является ли переменная логической
  • is_object () - определяет, является ли переменная объектом
  • is_array () - определяет, является ли переменная массивом
  • is_numeric () - определяет, является ли значение числом или числовой строкой

PHP escape-последовательностей - Phppot

пользователя Vincy.Последнее изменение 1 июня 2021 г.

Escape-последовательности используются для экранирования символа во время синтаксического анализа строки. Он также используется для придания особого значения разрывам строк, табуляции, предупреждению и т. Д.

Управляющие последовательности вставляются в строки, заключенные в двойные кавычки или синтаксис heredoc. Если строка заключена в одинарные кавычки или в nowdocs, то escape-последовательность не будет работать для получения ожидаемого результата. В предыдущем уроке мы видели интерполяцию переменных.

Escape-последовательности начинаются с экранирующего символа обратной косой черты (\), за которым следует символ, который может быть буквенно-цифровым или специальным. Если это буквенно-цифровой символ, он дает особое значение для обозначения разрывов строки \ n, возврата каретки \ r и т. Д.

Если это специальный символ, то при синтаксическом разборе строки он будет считаться таким, каким был. Например, если мы интерполируем \ $ var в строку, то она будет принята как $ var. Без экранирующего символа (\) переменная PHP $ var анализируется для получения ее значения.

Пример escape-последовательности

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

В этом примере я использовал escape-последовательность \ n, чтобы добавить разрыв строки после метки, и я использовал \\ для экранирования символа \ и печати его в браузере.

  

Широко используемые escape-последовательности в PHP

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

  • \ ’- для экранирования‘ внутри строки в одинарных кавычках.
  • \ »- для экранирования« внутри строки в двойных кавычках.
  • \ - Чтобы избежать обратной косой черты.
  • \ $ - Чтобы избежать $.
  • \ n - Чтобы добавить разрыв строки между строкой.
  • \ t - Чтобы добавить место табуляции.
  • \ r - Для возврата каретки.

↑ Вернуться к началу

Калькулятор длины строки

| Легко посчитайте длину текста

Введите текст и нажмите «Рассчитать!»:


Ознакомьтесь с другими нашими инструментами!

Инструменты для работы со строкой просмотра

Рассчитайте длину строки текста или цифр, чтобы проверить число
символов, которые он содержит! Использование нашего онлайн-инструмента подсчета символов
быстро и просто! Этот инструмент отлично подходит для компьютерных программистов, веб-
разработчики, писатели и другие программисты.

Чтобы узнать больше о подсчете символов и вычислении длины вашего
строки, продолжайте читать ниже.

Что такое персонаж в вычислениях?

Для компьютера персонаж - это единая единица информации. Для людей
иероглиф можно рассматривать как наименьшую форму компьютерного письма
система. Даже самые маленькие части предложения, строки текста или чисел
считается персонажем.Персонажи включают:

  • Цифры (413 = 3 символа)
  • Буквы (вода = 5 знаков)
  • Символы ($ @% * = 4 символа)
  • Общие знаки препинания (. "; = 3 символа)
  • Пробелы или пробелы (= 5 символов)
  • Управляющие символы (кодовая точка или число, не представляющее
    письменный символ)

Например, в следующей строке текста 74 экземпляра
соответствуют приведенным выше классификациям персонажа, поэтому длина этого
строка текста будет состоять из 74 символов:

"Используйте калькулятор длины строки для вашего удобства и для экономии
время!"

Не стесняйтесь протестировать калькулятор длины строки с этой строкой текста!

Где можно использовать инструмент подсчета символов?

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

Например, многие люди знакомы с ограничениями персонажей, когда
взаимодействие с Интернетом, например, бывшие 140, а теперь 280 символов
ограничение, установленное Twitter для твитов, размещаемых на его платформе. В связи
к письмам, отправляемым и получаемым по технологии, символы больше
важно отслеживать, чем слова.

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

В компьютерном программировании символы собираются вместе в строки,
которые представляют собой типы данных, которые часто реализуются в байтах данных, которые могут
быть прочитанными компьютерами. С онлайн-активностью и использованием Интернета
платформы расширяются, инструменты подсчета символов могут использоваться все больше и больше для
эффективно управлять компьютерными программами и веб-приложениями,

Как найти длину строки с помощью инструмента подсчета символов

Наш счетчик символов - отличный инструмент для быстрого определения длины
ваша строка текста или чисел.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2024 © Все права защищены.