Функции для работы со строками

Строковые функции

В PHP есть достаточно много функций для работы со строкими. Однако, в их использовании есть одна сложность:
они расчитаны на строки в однобайтных кодировках. В таких кодировках каждый символ занимает один
байт. Но современные кодировки многобайтные, в том числе, UTF-8. Поэтому некоторые функции работают
неправильно со строками, содержащими русские буквы. В частности, неправильно определяются позиции символов в
строке и длина строки.

Одно из решений — использовать функции предназначенные
для работы с многобайтными кодировками. Названия таких функций начинаются со слова mb. Перед их использованием
необходимо указать внутреннюю кодировку скрипта. Для этого используестся функция
mb_internal_encoding(). Она пишется один раз скрипте до использования строковых
функций.

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

mb_substr (строка, начальный символ, длина)

Параметры:

строка — строка из которой получается подстрока.

начальный символ — номер символа, с которого начинается подстрока

длина — длина подстроки. Необязательный параметр. Если не указать, то
будет получена подстрока до конца строки.

В PHP, как и в большинстве языков программирования, отсчёт символов в строке начинается с нуля.

Для примера выведем подстроку из переменной $str, начиная с 0 символа, длиной
6 символов:

8910
echo '<br>';
mb_internal_encoding("UTF-8");
echo mb_substr($str, 0, 6);

Начальный символ может иметь отрицательное значение. В этом случае отсчёт производится не с начала, а
с конца строки.

Длину тоже можно указать отрицательным числом. Тогда этот параметр меняет свой смысл. Это не длина
подстроки, а номер символа с конца строки, до которого доходит подстрока. Выведем подстроку начиная с
7 символа с конца строки, длиной 5 символов:

1112
echo '<br>';
echo mb_substr($str, -7, 5);

Функция mb_strpos() возвращает позицию первого вхождения подстроки
в строке.

mb_strpos (строка, подстрока, начальный символ)

Параметры:

строка — строка в которой производится поиск

подстрока — подстрока, которую нужно найти

начальный символ — номер символа, с которого начинается поиск. Необязательный
параметр. Позволяет осуществлять поиск не с начала строки, а с указанного символа.

Если подстрока не найдена, функция возвращает false.

Для примера найдём позицию, с которой начинается слово «на» в переменной
$newstr:

1516
echo '<br>';
echo mb_strpos($new_str, 'на');

Функция mb_strrpos() находит позицию не первого, а последнего вхождения
подстроки в строке. Параметры у неё такие же.

Кроме того, существуют функции mb_stripos() и
mb_strripos(), которые также находят позицию первого и последнего вхождения
подстроки, но они не учитывают регистр символов.

Функция str_replace() находит все вхождения подстроки и заменяет их на
другую подстроку. Она не выводит позицию символов, поэтому её можно использовать с русскими символами.

str_replace (искомая подстрока, новая подстрока, строка, количество замен)

Параметры:

искомая подстрока — подстрока, которая будет заменена

новая подстрока — подстрока, на которую происходит замена

строка — строка, в которой производится замена

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

Для примера заменим в переменной
$new_str слово «экран» на слово «страницу»:

1314
echo '<br>';
echo str_replace('экран', 'страницу', $new_str);

Учитывайте, что эта функция не меняет значение переменной, она только возвращает новое значение, а
сама переменная остаётся неизменной.

Вместо строки, в которой производится замена, может быть массив. Тогда замена будет сделана для всех
элеменах массива и функция str_replace() также вернёт массив.

Вместо иcкомой подстроки и новой подстроки также могут быть массивы. Можно использовать одну подстроку
для замены массива. Тогда все элементы массива будут заменены на новую подстроку.

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

Последнее обновление: 1.11.2015

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

;extension=mbstring

Раскомментируем ее, убрав точку с запятой. И так как у нас файл php.ini изменился, перезапустим веб-сервер Apache.

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

Функции strpos() и mb_strpos()

Функция возвращает позицию подстроки или символа $search в строке $str или значение , если
строка $str не содержит подстроки $search:

$input = 'This is the end'; 
$search = 'is';
$position = strpos($input, $search); // 2
if($position!==false)
{
	echo "Позиция подстроки '$search' в строке '$input': $position";
}

При использовании этой функции надо учитывать, что индексация символов в строке начинается с нуля, поэтому позиция символа ‘T’ будет равна 0.
Поэтому сравнение будет работать некорректно, ведь false и 0 при сравнении и приведении к общему типу будут представлять одно и то же значение.
Поэтому в данном случае корректно использовать только операцию эквивалентности: или .

Теперь применим функцию на другом примере:

$input = 'Мама мыла раму'; 
$search = 'мы';
$position = strpos($input, $search); // 9

Неожиданно, но результатом функции будет число 9. Хотя мы видим, что истинная позиция подстроки ‘мы’ в исходной строке равна 5.

Все дело в том, что некоторые строковые функции не всегда корректно обрабатывают кириллические символы, и для них лучше использовать другую функцию —
mb_strpos():

$position = mb_strpos($input, $search); // 5 

Функция strrpos()

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

$input = 'This is the end'; 
$search = 'is';
$position = strpos($input, $search); // 5

Но опять же данная функция не совсем корректно работает с кириллическими символами, поэтому нам надо использовать ее аналог — mb_strrpos():

$position = mb_strrpos($input, $search);

Функция trim()

Функция удаляет из строки начальные и конечные пробелы, а также управляющие символы ‘\n’, ‘\r’, ‘\t’:

$input = '  Мама мыла раму  ';
$input = trim($input);

Изменение регистра

Для перевода строки в нижний регистр используется функция strtolower:

$input = 'The World is Mine';
$input = strtolower($input);

Для перевода в нижний регистр строки с кириллическими символами можно использовать функцию mb_strtolower:

$input = mb_strtolower($input);

Для перевода строки в верхний регистр примеяются функции strtoupper()/mb_ strtoupper(),
которые работают аналогично.

Функция strlen()

Функция strlen() возвращает длину строки, то есть количество символов в ней:

$input = 'Hello world';
$num = strlen($input);
echo $num;

Функция strlen() также некорректно работает с кириллицей, поэтому в этом случае лучше применять функцию mb_strlen():

$input = 'Мама мыла раму';
$num = mb_strlen($input);
echo $num;

Получение подстроки

Применяя функцию , можно получить из одной строки ее определенную часть. Данная функция обрезает строку $str,
начиная c символа в позиции $start до конца строки. С помощью дополнительного необязательного параметра $length можно задать количество вырезаемых символов.

$input = 'The world is mine!'; 
$subinput1 = substr($input, 2);
$subinput2 = substr($input, 2, 6);
echo $subinput1;
echo "<br />";
echo $subinput2;

Так как данная функция некорректно работает с кириллицей, то вместо нее следует применять функцию mb_substr(),
которая действует аналогично:

$input = 'Мама мыла раму'; 
$subinput1 = mb_substr($input, 2);
$subinput2 = mb_substr($input, 2, 6);

Замена подстрок

Для замены определенной части строки применяется функция . Эта функция заменяет в строке $input все
вхождения подстроки $old на подстроку $new с учетом регистра:

$input = 'Мама мыла раму'; 
$input = str_replace("мы", "ши", $input);
echo $input;

НазадВперед

Сравнение строк в PHP

Функции strcmp() strcasecmp() используются для сравнения строк. Первая функция осуществляет сравнение строк с учетом регистра символов, а вторая — без учета. Функции возвращают следующие значения:

  • 0, если лексикографически строки равны;
  • -1, если первая строка лексикографически меньше, чем вторая (например строка «Арбуз» лексикографически меньше, чем строка «Борис»);
  • 1, если первая строка лексикографически больше, чем вторая (например строка «Борис2» лексикографически больше, чем «Борис1»).

Что такое лексикографическое сравнение строк? Представьте, что у вас есть два слова, и вам нужно расположить их по алфавиту в порядке возрастания. Возьмем те же слова «Арбуз» и «Борис». Первое слово начинается на букву «А», которая в алфавите следует раньше буквы «Б», на которую начинается второе слово. Поэтому первая строка будет лексикографически меньше второй строки.

Работа со строками в php. Основы PHP с нуля. Урок №7

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

chunk_split()convert_cyr_string()bin2hex()convert_uuencode()md5()str_repeat()str_replace()str_shuffle()strip_tags()strrev()strtolower()strtoupper()substr_replace()substr()ucfirst()ucwords()strlen()str_pad()

chunk_split()chunk_split() – функция php применяется для разделения строки на фрагменты.

Синтаксис:

chunk_split(string,length,end );

Настройки:

string — строка для разделенияlength — число, которое определяет длину кусков (по умолчанию 76).end — строка, которая указывает, что должно быть в конце каждого куска.

Пример:

<?php
$str = "StepkinBlog.ru";
echo chunk_split($str,2,"...<br>");
?>

Что я сделал? Я строку «StepkinBlog.ru» поделил на фрагменты. Через каждые 2 символа в строке будут выводиться две буквы с тремя точками «…» и с новой строки.

Результат:

St…
ep…
ki…
nB…
lo…
g….
ru…

convert_cyr_string()convert_cyr_string() – эта функция php преобразовывает строки из одной кириллической кодировки в другую.

Синтаксис:

convert_cyr_string (str,входная_кодировка, выходная_кодировка );

«str» – эта строка, которая будет перекодироваться.
«входная_кодировка» и «выходная_кодировка» — я думаю, тут все понятно. Задаются здесь параметры кодировки одной буквой.

  • k — koi8-r
  • w — windows-1251
  • i — iso8859-5
  • a — x-cp866
  • d — x-cp866
  • m — x-mac-cyrillic

Пример:

Задание: перекодируем фразу «Привет всем!» из кодировки windows-1251 в koi8-r и обратно.

<?
$str1 = "Привет всем!";
$str2 = convert_cyr_string ($str1,"w","k");
echo ("Я  перекодировал слово - '$str1' в koi8-r. Вот результат - '$str2'");

echo ("<br>");

$str3 = convert_cyr_string($str2,"k","w");
echo ("Теперь перекодируем слово '$str2' в win. Вот результат - '$str3'");
?>

Результат:

Я перекодировал слово — ‘Привет всем!’ в koi8-r. Вот результат — ‘рТЙЧЕФ ЧУЕН!’
Теперь перекодируем слово ‘рТЙЧЕФ ЧУЕН!’ в win. Вот результат — ‘Привет всем!’

bin2hex()bin2hex() — производит преобразование символьных данных в шестнадцатеричный вид.

<?
$str1 = "Привет всем!";
$str2 = bin2hex($str1);
echo($str2);
?>

Можно и так:

<?
$str2 = bin2hex ('Привет всем!');
echo ($str2);
?>

Результат:

cff0e8e2e5f220e2f1e5ec21

convert_uuencode()
convert_uuencode() — кодирует данные в формат uuencode

Пример:

<?php
echo convert_uuencode ("Мой блог - StepkinBlog.ru");
?>

«Мой блог — StepkinBlog.ru» перекодируется вот в такие символы:

9S.[I(.’K[N,@+2!3=&5P:VEN0FQO9RYR=0« `

Если нужно расшифровать, то эти перекодированные символы вставляете в коде вместо текста «Мой блог — StepkinBlog.ru»:

<?php
echo convert_uudecode ("9S.[I(.'K[N,@+2!3=&5P:VEN0FQO9RYR=0`` `");
?>

Результат:

Мой блог — StepkinBlog.ru

md5()md5() — возвращает MD5-хэш строки

<?php
$stepkinblog = md5("Доброе утро");
print $stepkinblog;
?>

Результат:

ef636e4d03c4aa310ad199d7c88de71a

str_repeat()str_repeat() — возвращает повторение строки заданное количество раз.

Синтаксис:

str_repeat ('что нужно повторить', количество раз);

Пример:

<?php
echo str_repeat ('Привет и так 5 раз',5);
?>

Результат:

Привет и так 5 раз Привет и так 5 раз Привет и так 5 раз Привет и так 5 раз Привет и так 5 раз

str_replace()str_replace() — производит замену одних символов в строке другими.

Синтаксис:

str_replace (search, replace, subject)

search — строка или массив поискаreplace — строка или массив заменыsubject — строка или массив, где будет сделана замена.

Пример:

<?php
echo str_replace("Петя","Степа", "С добрым утром, Петя!");
?>

Результат:

С добрым утром, Степа!

str_shuffle()str_shuffle() — возвращает строку с переставленными в ней символами случайным образом.

Пример:

<?php
echo str_shuffle ('PHP на StepkinBlog.ru');
?>

Результат:

krBolHu .geSаpPнPnti

strip_tags()strip_tags() – удаляет HTML и PHP тэги из строки

Пример:

<?php
// с учетом HTML тег
echo ("<h2><b>PHP</b> - <i>язык программирования.</i></h2>");
// удаляем HTML тэги из строки
echo strip_tags("<h2><b>PHP</b> - <i>язык программирования.</i></h2>");
?>

Результат:

Разбить текст на кириллице с помощью str_split -> utf — 8

str_split

Например буква P русского алфавита в кодировке UTF-8 покажет через var_dump({P}):

string(2) «Р»

str_splitUTF-8windows-125iconv(«UTF-8», «windows-1251», $text)

Если мы выведем здесь вот такой вариант разделения текста на символы:

$text=»Это просто текст»;

print_r(iconv(«UTF-8», «windows-1251», $text));

То получим:

Array

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

=>

здесьЧто делать!?

Нам нужно каждую букву обратно перекодировать в UTF-8, это можно сделать в цикле:

$text=»Это просто текст»;

$str = iconv(«UTF-8», «windows-1251», $text);

foreach (str_split($str) as $index => $value)

{

$переменная .= iconv(«windows-1251″,»UTF-8″, $value).»<br>\n»;

}

echo $переменная;

Результат:

Э

т

о

п

р

о

с

т

о

т

е

к

с

т

Поиск и замена в строке PHP

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

Вот пример использования функции strops():

$position = strpos("Привет, мир", "мир");
if ($position === false) echo "Искомая подстрока не найдена";
else echo "Искомая строка начинается с позиции $position";

Что касается замены текста, то для ее осуществления используется функция str_replace(). Функция такого вида str_replace(строка1, строка2, строка3) – заменяет в строка3 все вхождения строка1 на строка2.

echo str_replace("привет", "пока", "При встрече я говорю привет");

Самый простой способ получить символ строки в php

Для иллюстрации получения символа строки нам потребуется какая-то строка:

$string = ‘Helloy world!’;
Опять предположим, что нам потребуется 5 символ нашей строки, поступаем как с массивом и выедем определенный символ строки с помощью echo:
echo $string;

Результат получения и вывода определенного символа строки:

y

Если вы были внимательны, то должны были обратить внимание, на то, что буква выводится 6 по счету… а нам нужна была 5..

дело в том, что здесь работает тоже правило, что и с массивом… счет начинается с нуля… и это 1… как бы странно это не звучало! , возможно, что через несколько лет вы привыкните, а может и нет…

SQL Учебник

SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии

Перевод строки в число

Каждому, кто изучает веб-программирование, рано или поздно приходится переводить строку в число. Для этого используются две похожие функции: intval() и floatval(), каждая из которых принимает одну переменную $string. Друг от друга они отличаются только типом возвращаемых данных: intval() возвращает целое число, а floatval() — число с плавающей точкой.

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

Все способы разбить текст на символы примеры

  1. -> utf — 8
  2. /li>
  3. -> utf — 8
  4. Скачать
  1. Как просто разбить текст на символы!? Если ваш текст — один знак и var_dump покажет число 1, то эта функция будет у вас работать!

    Например буква R латинского алфавита в кодировке покажет через var_dump(«R»):

    string(1) «R»

    Для того, чтобы показать работу функции str_split с текстом на английском языке, нам понадобится какая-то переменная с английский текстом внутри:
    $text = «Hello world»;
    Применим функцию str_split с английскому тексту:
    $text_array = str_split($text);

    Как видим, наш текст на английском языке прекрасно разбился на символы и выводится как массив через print_r

    Array

    => H

    => e

    => l

    => l

    => o

    =>

    => w

    => o

    => r

    => l

    => d

    Если у вас windows-1251, то и для кириллицы этот способ вполне рабочий!

  2. Как разбить/разделить текст на кириллице с помощью str_split, нам нужно проверить таким же образом, какой результаты будет выводить var_dump

    Например буква P русского алфавита в кодировке UTF-8 покажет через var_dump({P}):

    string(2) «Р»

    Как вы поняли…str_split для кириллицы в UTF-8 по умолчанию не подойдет! Нам нужно… преобразовать строку из UTF-8 в windows-125 :
    iconv(«UTF-8», «windows-1251», $text)

    Если мы выведем здесь вот такой вариант разделения текста на символы:

    $text=»Это просто текст»;

    print_r(iconv(«UTF-8», «windows-1251», $text));

    То получим:

    Array

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    =>

    Как можно такой результат понять!? Вот так будет отображаться текст, кодировку которого не переваривает кодировка страницы… Мы немного писали о кодировке -> здесь
    Что делать!?

    Нам нужно каждую букву обратно перекодировать в UTF-8, это можно сделать в цикле:

    $text=»Это просто текст»;

    $str = iconv(«UTF-8», «windows-1251», $text);

    foreach (str_split($str) as $index => $value)

    {

    $переменная .= iconv(«windows-1251″,»UTF-8″, $value).»<br>\n»;

    }

    echo $переменная;

    Результат:

    Э

    т

    о

    п

    р

    о

    с

    т

    о

    т

    е

    к

    с

    т

  3. Еще один вариант разбиения строки посимвольно, который я теперь использую:

    preg_split — Разбивает строку по регулярному выражению

    Описание:

    pattern — отсутствует, поэтому «//»

    u — используется кодировка UTF-8

    Специальное значение limit, равное -1, подразумевает отсутствие ограничения

    PREG_SPLIT_NO_EMPTY — если этот флаг указан, функция preg_split() вернет только непустые подстроки.

    Возвращает массив символов.

    С теория разобрались, теперь пришло время примеров! У нас есть текст на английском языке, пропустим его через функцию preg_split и посмотрим, что получится:

    $text5 =»Hello world»;

    print_r(preg_split(«//u», $text5 , -1, PREG_SPLIT_NO_EMPTY) ) ;

    Как видим на нашем примере, текст/строка на английском языке прекрасно разбита на символы с помощью preg_split

    Array

    => H

    => e

    => l

    => l

    => o

    =>

    => w

    => o

    => r

    => l

    => d

  4. Все тоже самое проделаем с текстом на кирилице! Опять возьмем функцию preg_split и пропустим через неё уже текст на русском языке:

    $text=»Это просто текст»;

    print_r(preg_split(«//u», $text , -1, PREG_SPLIT_NO_EMPTY) ) ;

    В данном примере мы видим, что строка — текст прекрасно были разобраны на символы:

    Array

    => Э

    => т

    => о

    =>

    => п

    => р

    => о

    => с

    => т

    => о

    =>

    => т

    => е

    => к

    => с

    => т

Вас может еще заинтересовать список тем : #PHP | #PHP_FUNCTION | #PHP_STRING | #PHP_BOOK | Последняя дата редактирования : 17.12.2020 21:49
Название скрипта :Разбить строку по символам php

Скрипт № 33.4Ссылка на скачивание : Все скрипты на

//dwweb.ru/comments_1_5/include/img/hand_no_foto.png
no
no

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

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

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

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

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

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

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

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

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

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

Как изменить регистр строки в PHP: примеры

Изменение регистра часто используется для сравнения строк и условных операторов. Допустим, пользователь должен ввести имя верховного бога в скандинавской мифологии. В программе есть вариант «Один», с которым и будет сравниваться ответ пользователя. Если введенный текст не будет совпадать с имеющимся (например, пользователь напишет «один» или «ОДИН»), то программа вернет значение false вместо true. Чтобы этого избежать, применяется функция изменения регистра. Это часто используется, если сайт на PHP имеет теги: вместо сотни вариантов слова «личное» («Личное», «личное», «ЛИЧНОЕ» и т. п.) есть только один тег в нижнем регистре.

Функция strtolower() изменяет регистр на нижний. Допустим, есть строка $catName = «Fluffy». Функция strtolower($catName) вернет строку «fluffy». Изменить регистр на верхний можно с помощью функции strtoupper().

Получим определенный символ строки в php

  1. -> перекодировка строки
  2. -> mb_substr
  3. Скачать

Для иллюстрации получения символа строки нам потребуется какая-то строка:
$string = ‘Helloy world!’;
Опять предположим, что нам потребуется 5 символ нашей строки, поступаем как с массивом и выедем определенный символ строки с помощью echo:
echo $string;
Результат получения и вывода определенного символа строки:
y
Если вы были внимательны, то должны были обратить внимание, на то, что буква выводится 6 по счету… а нам нужна была 5..

дело в том, что здесь работает тоже правило, что и с массивом… счет начинается с нуля… и это 1… как бы странно это не звучало! , возможно, что через несколько лет вы привыкните, а может и нет…

В свое время я пересел на кодировку utf-8, почему!? Да просто как-то притомился с !
Мы победили крокозябры, но! Проблема в том. что php(редиска, это не такая уж большая проблема…если вы знаете, что делать) не очень любит кириллицу в кодировке utf-8, у нас будет отдельная страница в utf-8 не работает, поэтому не будем растекаться по древу…
Итак…

Для иллюстрации получения символа строки в кириллице, нам потребуется эта самая строка на кириллице…
$string_1 = ‘Привет мир!’;
Если мы проделаем тоже, что было применено в выше идущем пункте…
echo $string_1 ;
То получим:

Как я не пытался различными способами решить именно такой способ получения символа строки, увы я не смог решить этот ребус! Но… разве это когда-то нас останавливало!? У нас есть для этого функция, которые в состоянии получить определенный символ строки… получим… пусть это будет первый элемент строки:
Нам нужно перекодировать строку в windows-1251 применяем функцию substr, третьим значением ставим тот символ строки который хотим получить, и третьим шагом возвращаем кодировку строки…

$string_1 = ‘Привет мир!’;
$stroka = iconv(‘UTF-8′,’windows-1251’,$string_1 ); //Меняем кодировку на windows-1251
$stroka = substr($stroka , 0 , 1); //Получаем требуемый(1) символ строки
$stroka = iconv(‘windows-1251′,’UTF-8’,$stroka ); //Меняем кодировку на windows-1251
Результат получения определенного символа строки:

П

Вообще, если у вас кириллица, то должна работать функция mb_substr, не то, чтобы, я с утра до вечера пользуюсь функциями с mb, но сколько бы я не использовал их, то всегда с ними что-то не то…
если мы сейчас применим функцию mb_substr:
echo mb_substr($myString, 0, 1);
То опять получим:

Для того, чтобы данная функция получила определенный символ строки, то нужно объявить кодировку внутри скрипта…
mb_internal_encoding(«UTF-8»);
И теперь повторим:

mb_internal_encoding(«UTF-8»);
echo mb_substr($myString, 0, 1);
Результат получения символа строки с помощью mb_substr
П

Вас может еще заинтересовать список тем : #PHP | #PHP_STRING | #PHP_BOOK | #PHP_FUNCTION | Последняя дата редактирования : 25.01.2021 22:48
Название скрипта :Получить определенный символ строки

Скрипт № 33.11Ссылка на скачивание : Все скрипты на

//dwweb.ru/comments_1_5/include/img/hand_no_foto.png
no
no

Работа с подстроками в PHP

Функция substr(строка, число1, число2) возвращает подстроку, начинающуюся с позиции число1 и длиной число2. Попробуйте выполнить код:

echo substr("Hello, world!", 2, 4);

Первый параметр — это исходная строка. Второй параметр — начало подстроки, а третий параметр (он н еобязательный) — длина подстроки. Если третий параметр не задан, то подстрока возвращается до конца исходной строки.

$sub = substr("машина", 4); //возвращает "на"
$sub = substr("машина", 2, 4); //возвращает "шина"

Очень мощной является функция explode(), позволяющая извлечь все подстроки, разделенные разделителем. Предположим, что у нас есть вот такая строка: «Строка1;Строка2;Строка3».

$str = "Строка1;Строка2;Строка3";

При вызове explode() мы должны указать два параметра: разделитель и исходная строка.

$A = explode(";", $str);

Функция возвращает список, содержащий наши строки.

Array
(
  => Строка1
  => Строка2
  => Строка3
)

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

Основные строковые функции PHP

Перечень полезных строковых функций PHP удобнее всего представить в виде таблицы. Функции приводятся без параметров — просто название функции и ее краткое описание. Далее мы рассмотрим некоторые из этих функций отдельно.

Функция Описание
chop() Удаляет пробельные символы в конце строки
convert_cyr_string() Используется для преобразования кодировок русского языка
explode() Выделяет подстроки (поля) из строки
HtmlSpecialChars() Заменяет специальные символы их HTML-эквивалентами, например < будет заменено эквивалентом &lt
ltrim() Похожа на trim(), но удаляет пробельные символы только в начале строки
md5() Кодирует указанную строку с помощью алгоритма MD5
nl2br() Заменяет все символы новой строки (\п) тегом
. Очень полезная функция в веб-программировании
pack() Запаковывает бинарные данные
str_replace() Используется для замены в строке
strcasecmp() To же, что и предыдущая функция, но производит сравнение без учета регистра символов
strcmp() Используется для сравнения строк
strip_tags() Удаляет все HTML-теги из строки
strlen() Определяет длину строки
strpos() Производит поиск подстроки в строке
strtolower() Преобразует все символы строки в нижний регистр
strtoupper() Преобразует все символы строки в верхний регистр
substr() Возвращает определенную подстроку
trim() Функция помогает избавиться от пробельных символов в начале и в конце строки
unpack() Распаковывает бинарные данные
urldecode() Раскодирует строку, которая была ранее закодирована с помощью urlencode()
urlencode() Кодирует строку для ее передачи в URL (символы, которые не могут быть представлены в URL, например символы русского языка, заменяются их кодами)
wordwrap() Используется для разбивки текста

Как найти позицию первого вхождения подстроки

Допустим, у нас есть простая строка:

$string = «My name is Yemelyan and I am 27 year old»;

Также у нас есть две строки с именами:

$name = «Yemelyan»;

$anotherName = «Katherin»;

Нам необходимо узнать, содержит ли первая строка эти два имени. Для этого используется функция strpos($str, $search). Она возвращает позицию искомой подстроки $search, если эта строка содержится в исходной, $str. В противном случае функция возвращает булево значение false. Например, strpos($string, $anotherName) вернет false, а strpos($string, $name) — целое число. Код будет таким (напишем вариант, когда позиция выводится на экран):

$string = «My name is Yemelyan and I am 27 year old»;

$name = «Yemelyan»;

$anotherName = «Katherin»;

echo strpos($string, $anotherName); //выведет false

echo strpos($string, $name); //выведет позицию первого вхождения подстроки

Учтите, что нумерация строки начинается с нуля, то есть в нашем случае последняя строка выведет число 11 (пробелы также считаются).

Сложение строк

Для сложения строк не работает оператор «+». Вместо этого используется точка. Пример:

45
$new_str = $str.' для вывода на экран';
echo $new_str;

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

67
echo '<br>';
echo "Это $str";

Я не рекомендую часто пользоваться этой возможностью, потому что такая программа работает несколько
медленнее. Лучше использовать сложение строк.

Поиск символа в строке — использование регулярных выражений

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

Но помните, что функция 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.'" есть в данной строке.';
}

Как получить символ строки кириллица utf-8

Для иллюстрации получения символа строки в кириллице, нам потребуется эта самая строка на кириллице…

$string_1 = ‘Привет мир!’;

Если мы проделаем тоже, что было применено в выше идущем пункте…

echo $string_1 ;

То получим:

Как я не пытался различными способами решить именно такой способ получения символа строки, увы я не смог решить этот ребус! Но… разве это когда-то нас останавливало!? У нас есть для этого функция, которые в состоянии получить определенный символ строки… получим… пусть это будет первый элемент строки:

Нам нужно перекодировать строку в windows-1251 применяем функцию substr, третьим значением ставим тот символ строки который хотим получить, и третьим шагом возвращаем кодировку строки…

$string_1 = ‘Привет мир!’;
$stroka = iconv(‘UTF-8′,’windows-1251’,$string_1 ); //Меняем кодировку на windows-1251
$stroka = substr($stroka , 0 , 1); //Получаем требуемый(1) символ строки
$stroka = iconv(‘windows-1251′,’UTF-8’,$stroka ); //Меняем кодировку на windows-1251

Результат получения определенного символа строки:

П

Создание и вывод строки

Мы разберем вывод строки на экран с помощью известной всем языковой конструкции echo. Программист может вывести строку сразу:

echo «Это Новая Строка»

или сначала создать переменную, а затем вывести ее на экран:

$str = «Это Новая Строка»;

echo $str;

Если нужно вывести несколько строк в одной, то прибегают к их конкатенации:

echo «Это» . » Новая» . » Строка»;

или

$str1 = «Это»;

$str2 = «Новая»;

$str3 = «Строка»;

echo $str1 . $str2 . $str3;

В последнем случае на экран будет выведено ЭтоНоваяСтрока. Пробел можно добавить сразу при вызове echo:

echo $str1 . ‘ ‘ . $str2 . ‘ ‘ . $str3;

В этом случае на экран выведется: «Это Новая Строка». Конкатенация возможна не только при выводе, но и при создании строки:

$str1 = «Это»;

$str2 = «Новая»;

$str3 = «Строка»;

$string = $str1 . ‘ ‘ . $str2 . ‘ ‘ . $str3;

echo $string;

Echo выводит как латинские буквы, так и кириллические. Если одна из переменных содержала число, то при конкатенации это число будет преобразовано в соответствующую строку:

$i = 2;

$sum = $i + $i; //теперь $sum содержит число 4

echo $i . » + » . $i . » = » . $sum;

На экран будет выведено: «2 + 2 = 4».

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий