Обрезать текст php



Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

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

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

Вариант 1 (самый тривиальный способ обрезать строку)

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

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

Вариант 2 (обрезаем строку php до символа пробела)

Такой вариант учитывает попадание начала обрезания строки на середину слова и на выходе возвращает хорошо грамотно обрезанный текст без обрывков слов.
В минусах по-прежнему проблема с кодировкой.

Вариант 3 (правильно обрезаем строку php)

Данный вариант является самым наилучшим и практичным в применении способом в php обрезать строку до символа. Функцией mb_substr мы не просто обрезаем строку php до пробела, но и учитываем кодировку этой строки. Такой подход позволяет избежать проблемы с появлением знаков вопроса после обрезки текста.

Надеюсь данный урок будет полезен начинающим программистам, поскольку именно они чаще всего сталкиваются с такими актуальными задачами как «обрезать строку с конца php» или «php обрезать строку до символа»

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

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

lifeexample.ru

mb_strimwidth()


mb_strimwidth() возвращает в PHP обрезанную строку по длине и добавляет конечные символы, указанные в функции. Так как это одна из основных функций PHP, ее мы рассмотрим в первую очередь. Применяется она очень просто:

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

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

При отправке сообщений в Twitter и на другие ресурсы, где символы чувствительны к регистру, каждый символ имеет значение… и эта функция в ряде случаев сэкономит вам один пробел!

mb_substr()

Функция PHP mb_substr() «получает часть строки«. Она возвращает подстроку на основе количества символов. Позиция обрезки отсчитывается от начала строки. Позиция первого символа равна 0. Позиция второго символа равна 1. И так далее.

Чтобы добавить многоточие (или любой другой конечный символ), мы можем изменить первую функцию, которую рассматривали. Мы обрезаем строку перед добавлением $trimmarker, чтобы гарантировать, что у нас не будет добавляться в PHP обрезанной строке с конца лишний пробел.


mb_substr(), substr() и mb_strcut()

mb_substr(), substr() и mb_strcut() — еще несколько функций, похожих на те, которые я описал выше. Они отличаются только тем, как обрабатываются многобайтовые наборы символов (китайский язык и т.д.).

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

preg_match()

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

Описание функции

Функция принимает три параметра: $string, $length и $trimmarker (многоточие или другие символы, которые добавляются в конце строки).

Строка 7

Первое, что мы делаем, это проверяем длину PHP обрезанной строки после символа. Если строка короче, чем $length, то мы возвращаем эту строку.

Строка 9

Функция mb_substr() прерывает строку в $length, если это количество символов не содержит окончания слова (пробела). Если мы передали строку длиною 500 символов и эта строка не содержит пробелов, то будет возвращена вся строка (так как функция preg_match не нашла окончания слова). На данный момент мы обрезаем строку таким образом, и возвращаем ее полностью.


Строки 10, 11, и 12

Если длина нашей строки превышает максимальную длину, определенную в качестве параметра функции, мы выполняем регулярное выражение функции preg_match(), чтобы вернуть часть строки до символа с номером $length, который определяется как конец слова (‘/^.{1,$length}b/s’). Знак периода означает любой символ, кроме символа новой строки (n). Фигурная скобка определяет диапазон, который задает, сколько символов должен PHP обрезать в строке. Таким образом {1,$length} означает от 1 до символа $length. Наконец, b означает, что шаблон будет соответствовать окончанию слова. Мы можем производить поиск только слов целиком по шаблону, который мы предоставили. И в конце s задает поиск всех пробелов.

Так как мы не хотим, чтобы возвращаемая строка превышала длину $length, максимальное количество символов в функции preg_match должно быть равно максимальной длине минус длина $trimmarke.r. Мы должны учитывать это.

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

strrpos()

Функция strrpos() находит позицию последнего вхождения подстроки в строке. Она возвращает позицию, на которой располагается искомая подстрока относительно начала строки. Отметим также, что первая позиция в строке имеет номер 0 — а не 1, поэтому мы учитываем это в функции, добавляя 1 к длине строки при применении функции strrpos().


wordwrap()

Использование wordwrap() — это еще один способ, с помощью которого можно в PHP обрезать строку до пробела, хотя он не очень эффективен и не является лучшим выбором (если только обстоятельства не требуют этого). Wordwrap оборачивает строку в заданное число символов с использованием символа разрыва строки. Применив функцию PHP explode(), мы можем построить массив из каждой строки текста. Мы определяем, нужен ли $trimmarker (конечное многоточие), запросив, пусто ли второе значение массива. Если пусто, то строка не оборачивается.

Определение для параметра cut значения true означает, что строка всегда оборачивается до или на указанном символе.

str-split()

Функция str-split() может быть использована в приведенной выше функции для преобразования строки в массив. str-split () не разбивает строку до целого слова. С ее помощью PHP обрезает последний символ в строке ровно до 120 знаков.

Усечение по заданному количеству слов

Ниже приведен пример PHP обрезки строки по количеству символов, пробелов или слов. Это не слишком отличается от того, что мы уже делали. Затем мы сводим скорректированный массив в строку символов, максимальное количество которых задается $limit. Мы добавляем $trimmarker (…), если наш $limit меньше, чем количество слов в массиве.

strtok()


Совместно применив strtok() и wordwrap() мы можем создать короткую, но эффективную функцию, которая будет в PHP обрезать строку до нужной длины. Как показано ниже, она не будет учитывать при усечении $length +$trimmarker. Но это удобно, если вы не слишком заботитесь о длине возвращаемой строки.

Обрезка слов в WordPress

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

Заключение

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

В ряде примеров мы вернули $trimmarker, представляющий собой многоточие. При необходимости вы можете вернуть HTML-объект Ellipsis, для этого используется код …. Но лично я предпочитаю многоточие.

www.internet-technologies.ru

Это очень часто выполняемая операция при работе с php.
Делается обрезка строки очень просто — есть функция substr

Она принимает три параметра, а именно:
stringисходная строка — строка которую будем резать


startначальная позиция — позиция с которой будем резать строку

lengthдлина (необязательный параметр) — длина отрезаемого куска строки

Пользоваться ей очень просто, вот несколько примеров:

Обрезать строку на определенное (n) количество символов:

<?php  	$n = 5;  	$string = 'hello world!';  	echo substr($string, 0, $n); //hello  ?>

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

<?php  	$n = -5;  	$string = 'hello world!';  	echo substr($string, 0, $n); //hello w  ?>

Данный пример интересен тем, что в параметр length мы передаем отрицательное значение, и в таком случае функция отсчитывает указанную величину с конца строки.

Получить определенное (n) количество символов с конца строки

<?  $n = -5;  $string = 'hello world!';  echo substr($string, $n); //orld!  ?>

Здесь в параметр start мы передаем отрицательное значение, которое и позволяет нам сделать то, что нам нужно.


Обрезать строку до первого пробела

<?php  	$string = 'hello world!';  	echo substr($string, 0, strpos($string, ' ' )); //hello  ?>

Тут мы в параметр length передаем результат выполнения функции strpos, которая вычисляет позицию первого пробела. Строку можно бить конечно же не только по пробелу, а по любому другому символу.

Обрезать строку до последнего пробела

<?php  	$string = 'hello world, hello!';  	echo substr($string, 0, strrpos($string, ' ' )); //hello world,  ?>

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

coding.dp.ua

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

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


— строка может быть обрезана посреди слова, что не есть хорошо;

— полученная строка может оканчиваться на какой-нибудь символ (тире, двоеточие и т.д.).

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

Предположим, что имеется вот такая текстовая строка: «Демонстрация работы скрипта правильной обрезки текста!!! Тестируем работу.«

А теперь давайте просто обрежем имеющуюся у нас текстовую строку до длины в 60 символов. В результате получится: «Демонстрация работы скрипта правильной обрезки текста!!! Тес«

В случае же использования нашего скрипта, получится вот такая текстовая строка: «Демонстрация работы скрипта правильной обрезки текста…«

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

Для того чтобы обрезать текст не посреди слов и при этом учитывать, чтобы в конце строки не было символов кроме букв и цифр, можно воспользоваться нашей функцией truncation():


Вызывать функцию truncation() следует следующим образом:

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

usefulscript.ru

Обрезаем текст с помощью функции substr PHP

Функция substr ( $string, $start, $length ) , где $string — это переменная с текстом, $start — это символ, с которого начинается отсчёт (за первый символ берётся 0), а $length — это количество символов выделенного текста.

$text = "Example and text";    $first = substr($text,0,6); // Показывает 6 символов начиная с 0-ого, самого первого  echo $first; // выведет 'Example'.     $second = substr($text,8,3); // Показывает 3 символа начиная с 8-ого  echo $second; // выведет 'and'

Если не указать параметр Количество символов (2 цифра), то функция выведет все оставшиеся символы

$text = "Example and text";    $third = substr($text,8); // Покажет ВСЕ символы начиная с 8-ого  echo $third; // выведет 'and text'

Обрезаем Русский текст с помощью функции mb_substr PHP

Функция mb_substr выполняет те же самые задачи, что и substr, но также способна обрабатывать многобайтные кодировки. Поэтому в случае с русским текстом Вам пригодится именно mb_substr. Работает так же

$text = "Пример текста";    $first = mb_substr($text,0,6,'UTF-8'); // Показывает 6 символов начиная с 0-ого, самого первого  // Внимание! Указывайте кодировку исходного текста! В данном случае utf-8  echo $first; //выведет 'Пример'    $second = mb_substr($text,7,6,'UTF-8'); // Показывает 6 символов начиная с 7-ого  echo $second; // выведет 'текста'

Обратите внимание на то, что в случае с кириллицей (русский текст) лучше указывать кодировку в конце функции. В примере использован самый популярный вариант — UTF-8

Обрезаем текст с конца

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

$text = "Sprite and Fanta";    $first = substr($text,-6,5); // Показывает 5 символов начиная с 6-ого с конца  echo $first; //выведет 'Fant'

После обрезки ещё и дописываем текст

После обрезки переменной с текстом дописываем в конец дополнительный текст

$example = "Text text text text";    $example = substr($example,0,9); // Показывает 9 символов начиная с 0-ого, самого первого  $example .= " more...";  echo $example; //выведет 'Text text more...'

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

$text = "Uncle ";    $example = "George and Michael";  $example = substr($example,0,6); // Показывает 6 символов начиная с 0-ого, самого первого  $text .= $example;  echo $text; //выведет 'Uncle George'

Обрезка текста до первого пробела

$text = 'Hello world!';  echo substr($text, 0, strpos($text, ' ' )); // Выведет 'Hello'

Готовая функция PHP обрезки текста по Словам PHP

function cut($string, $length){  $string = mb_substr($string, 0, $length,'UTF-8'); // обрезаем и работаем со всеми кодировками и указываем исходную кодировку  $position = mb_strrpos($string, ' ', 'UTF-8'); // определение позиции последнего пробела. Именно по нему и разделяем слова  $string = mb_substr($string, 0, $position, 'UTF-8'); // Обрезаем переменную по позиции  return $string;  }    $text = 'Северная война закончилась в 1721 году';  echo cut($text, 17); // выведет 'Северная война', без части слова 'закончилась'  

Можно обрезать по словам через массив…

$text = 'Microsoft был основан Биллом Гейтсом ещё в далёком 1975 году.';     $array = explode(" ",$text); // перерабатываем строку в массив  $array = array_slice($array,0,5); // выбираем первые 5 слов-элементов  $newtext = implode(" ",$array); // массив снова перерабатываем в строку     echo $newtext;//Выведет 'Microsoft был основан Биллом Гейтсом'

tradebenefit.ru

Обрезать текст php В данной статье мы рассмотрим функции PHP, с помощью которых можно обрезать строку с текстом в нужном месте.

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

Рассмотрим функцию substr, с помощью которой мы будем обрезать текст.

substr – возвращает подстроку.

Она имеет следующий формат написания: substr(string, start, length), где string – строка с текстом, start – позиция, с которой нужно начать отсчет (числовое значение, обычно бывает 0), length – нужно количество символов (числовое значение).

Пример #1 (простая обрезка):

Объяснение кода:

$simple – строка с текстом, который нужно обрезать (string);
0 – символ, с которого нужно начать отсчет, т.е. с самого первого;
7 – количество символов (вместе с пробелами), которое нужно показать, начиная с нулевого (0).

В результате выполнения мы получим «I think» – ровно семь символов, включая пробел.

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

Пример #2 (обрезка строки с конца):

В результате выполнения данного кода мы получим «expl». То есть, мы показываем пять символов с конца строки, начиная с восьмого.

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

Пример #3 (добавление текста после обрезки):

В результате выполнение данного кода мы получим «I think I can…».

Если вы захотите обрезать строку, которая содержит текст на русском языке, с помощью substr, то у вас появятся непонятные символы (естественные проблемы с русским текстом). Для того, чтобы исправить данную проблему, нужно использовать mb_substr.

mb_substr – получает часть строки.

Она имеет следующий формат написания: mb_substr(string, start, length, string encoding). Все то же самое, что и в substr. Единственное отличие – это дополнительный параметр, в котором указывается кодировка.

Для примера используем ту же фразу, но только на русском языке.

Пример #4 (обрезка строки на русском языке):

Как видно из примера, мы указали кодировку UTF-8, и в результате выполнения данного кода получим «Я могу всё об…». Остальные параметры полностью схожи с substr.

red-star.pro


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.