Генератор случайных чисел
Артем Мáлков
420 просм
0 комм
Поделиться

12 вариантов обрезки строки на PHP

В этой статье я хотел бы поговорить о самых распространенных способах обрезки строк на PHP. Где это может вам пригодиться? Если, например, на вашем сайте не предусмотрена обрезка полного текста до N знаков, то с помощью предложенных способов вы сможете сделать так называемую краткую версию материала.

Итак, поехали.

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

Предположим, что у нас есть предложение «Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, французу отдана?». Его мы будем использовать во всех последующих примерах.

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

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = explode(",", $string); // Задаем нужным нам символ в кавычках
echo $parts[0]."<br>"; // Выведет "Скажи-ка" 
echo $parts[1]."<br>"; // Выведет "дядя"  
echo $parts[2]."<br>"; // Выведет "ведь не даром Москва"
echo $parts[3]."<br>"; // Выведет "спаленная пожаром"
echo $parts[4]."<br>"; // Выведет "Французу отдана?"
?>

С помощью такого способа очень удобно разбивать url-адреса на части и в дальнейшем использовать их под свои нужды.

Обрезка начала или конца строки от определенного символа

Здесь идея у нас следующая: находим нужный нам знак и удаляем все после (или до) него.

Код для удаления всего текста после первого символа (в нашем случае - после запятой):

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = substr($text, 0, strpos($text, ",")); // Задаем нужным нам символ в кавычках
echo $parts; // Выведет "Скажи-ка"
?>

Код для удаления всего текста после последнего символа (в нашем случае - после запятой):

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts= substr($string, 0, strrpos($string, ",")); // Задаем нужным нам символ в кавычках
echo $parts; // Выведет "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром" 
?>

Код для удаления всего текста до последнего символа:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = array_pop(explode(",", $string)); // Задаем нужным нам символ в кавычках
echo $parts; // Выведет "Французу отдана?" 
?>

Удаление n-го количества символов в начале или конце строки

Здесь мы удаляем нужное количество символов с нужной нам стороны.

Код для удаления 5-ти символов в начале строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = mb_substr($string, 5); 
echo $parts; // Выведет "-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?"
?>

Код для удаления 5-ти символов в конце строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = mb_substr($string, 0, -5); 
echo $parts; // Выведет "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу от"
?>

Удаление определенных символов в начале или конце строки

Если у вас есть тест, у которого по бокам (или с одной стороны) есть ненужный символ, который необходимо убрать – воспользуемся функциями ltrim, rtrim, и trim.

Для удаления символа в начале строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "5Тестовая фраза5";
$parts = ltrim($string, "5");
echo $parts; // Выведет "Тестовая фраза5" 
?>

Для удаления символа в конце строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "5Тестовая фраза5";
$parts = rtrim($string, "5"); 
echo $parts; // Выведет "5Тестовая фраза"
?>

Для удаления символа в начале и конце строки одновременно:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "5Тестовая фраза5";
$parts = trim($string, "5"); 
echo $parts; // Выведет "Тестовая фраза"
?>

Обрезка текста до нужного количества слов

Этот способ удобен для обрезки больших текстов. Решение задачи:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$array = explode(" ",$string);
$array = array_slice($array, 0, 5); // Задаем количество слов (в нашем случае 5)
$parts = implode(" ",$array);
echo $parts; // Выведет "Скажи-ка, дядя, ведь не даром"
?>

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

Обрезка текста до нужного количества символов в конце и начале строки

Этот вариант оставляет необходимое нам количество символов (так называемый эффект краткой версии материала) в начале:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = mb_substr($string, 0, 12); // Задаем количество символов (в нашем случае 12)
echo $parts; // Выведет "Скажи-ка, дя" 
?>

А этот вариант выведет нам нужное количество символов в конце:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = mb_substr($string, -12, 12); // Задаем количество символов (в нашем случае 12)
echo $parts; // Выведет "цузу отдана?"  
?>

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

Еще несколько других примеров обрезки строки

Здесь я приведу пару конкретных примеров обрезки строк.

Если наша строка содержит html теги – удалим их:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, <b>дядя</b>, ведь не даром <u>Москва</u>, спаленная пожаром, Французу отдана?";
$parts = strip_tags($string);
echo $parts; // Выведет "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?" 
?>

Удалим нужный нам символ из всей строки (в нашем случае – удаляем все запятые):

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = str_replace( ",", "", $string); // Задаем нужным нам символ в кавычках
echo $parts; // Выведет "Скажи-ка дядя ведь не даром Москва спаленная пожаром Французу отдана?"
?>

Удалим ссылку из строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Скажи-ка, <a href="https://artem-malcov.ru">дядя</a>, ведь не даром Москва, спаленная пожаром, Французу отдана?";
$parts = preg_replace("~<a href="https://artem-malcov.ru">[^&lt;]+?</a>~", "",$string);
echo $parts; // Выведет "Скажи-ка, , ведь не даром Москва, спаленная пожаром, Французу отдана?" 
?>

Удаляем все числа из строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Тестируем обрезку чисел 1234567890";
$parts = preg_replace("/\d/", "", $string);
echo $parts; // Выведет "Тестируем обрезку чисел" 
?>

Удаляем все буквы из строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Тестируем обрезку букв 1234567890";
$parts = preg_replace("/\W/", "", $string);
echo $parts; // Выведет "1234567890" 
?>

Удаляем все специальные символы из строки:

<?php
header("Content-Type: text/html; charset=utf-8");
$string = "Тестируем обрезку специальный (символов) #!-+";
$parts = preg_replace("~(\\\|\*|\#|\%|\^|\&|\!|\-|\+|\?|\[|\?|\]|\(|\\\$|\))~", "", $string); 
echo $parts; // Выведет "Тестируем обрезку специальный символов"
?>

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

0
комментарий
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария