Php поиск подстроки до позиции

Содержание
  1. Работа со строками в PHP
  2. Количество символов
  3. Получить длину строки
  4. Количество символов без пробелов
  5. Количество слов с строке
  6. Получить количество переносов в строке
  7. Количество букв в строке
  8. Количество цифр в строке
  9. Количество знаков препинания
  10. Количество пробелов в строке
  11. Количество пробелов в начале строки:
  12. Количество пробелов в конце строки:
  13. Поиск
  14. Получить количество вхождений подстроки
  15. Найти позицию первого вхождения подстроки
  16. Найти позицию последнего вхождения подстроки
  17. Найти все вхождения подстроки
  18. Извлечение из текста
  19. Начало строки
  20. Получить первый символ:
  21. Получить три первых символа:
  22. Получить первое слово:
  23. Получить все после первого слова:
  24. Конец строки
  25. Получить последний символ:
  26. Получить три последних символа:
  27. Получить последнее слово:
  28. Получить всё до последнего слова:
  29. Середина строки
  30. Получить второе слово:
  31. Получить текст до дефиса:
  32. Получить текст после дефиса:
  33. Переносы строк
  34. Получить первую строку:
  35. Получить последнюю строку:
  36. Пилучить символы из ковычек и скобок
  37. Замена в строках
  38. Заменить первый символ:
  39. Заменить три первых символа:
  40. Заменить последний символ:
  41. Заменить три последних символа:
  42. Замена символов и слов в строке
  43. Заменить пробелы:
  44. Заменить слово:
  45. Заменить всё до дефиса:
  46. Заменить всё после дефиса:
  47. Добавление в строки
  48. Добавить строку после 10-го символа:
  49. Добавить перед словом:
  50. Добавить после слова:
  51. Вставить строку между всех символов
  52. Дописать строку до нужной длины
  53. Дописать стркуку слева:
  54. Дописать строку справа:
  55. Дописать строку с обеих сторон:
  56. Удаление из строк
  57. Удаление в начале строки
  58. Удалить первый символ:
  59. Удалить первые 3 символа:
  60. Удалить первое слово:
  61. Удаление в конце строки
  62. Удалить последний символ:
  63. Удалить три последних символа:
  64. Удалить последнее слово:
  65. Удаление подсторк
  66. Удалить всё перед сиволом:
  67. Удалить всё после сивола:

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

Обзор PHP-функций для работы со строками и практическое их применение с учетом кодировки UTF-8.

Количество символов

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

Функция strlen($string) возвращает длину строки, но возвращает неправильный результат если в строке есть кириллица в UTF-8, поэтому нужно использовать mb_strlen() .

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo strlen($text); // 105 echo mb_strlen($text); // 59

Количество символов без пробелов

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = mb_ereg_replace('[\s]', '', $text); echo mb_strlen($str); // 49

Количество слов с строке

Функция str_word_count() возвращает количество слов в строке, но символы обрамленные пробелами будет считаться за слово, например « — ». Так же функция не работает с UTF-8, как видно в примере:

$text = 'Lorem Ipsum - is simply dummy!'; echo str_word_count($text); // 6 $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo str_word_count($text); // 1
$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = preg_replace("/[[:punct:]]/", '', $text); $str = mb_ereg_replace('[\s]+', ' ', $str); $words = explode(' ', $str); echo count($words); // 10

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

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo substr_count($text, PHP_EOL); // 2

Количество букв в строке

$text = 'Съешь ещё этих мягких французских булок, да выпей же чаю.'; echo $str = preg_replace('/[^a-zа-яё]/ui', '', $text); echo mb_strlen($str); // 46

Количество цифр в строке

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = preg_replace('/[^0-9]/ui', '', $text); echo mb_strlen($str); // 0

Количество знаков препинания

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = preg_replace("/[^[:punct:]]/", '', $text); echo mb_strlen($str); // 3

Количество пробелов в строке

Или количество вхождений любого другого символа или подстроки.

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo substr_count($text, ' '); // 10

Количество пробелов в начале строки:

$text = ' Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_strlen($text) - mb_strlen(ltrim($text, ' ')); // 5

Количество пробелов в конце строки:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю. '; echo mb_strlen($text) - mb_strlen(rtrim($text, ' ')); // 3

Поиск

Получить количество вхождений подстроки

$text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; echo mb_substr_count($text, 'ещё'); // 2

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

$text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; echo mb_strpos($text, 'ещё'); // 6 // Без учета регистра: $text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; echo mb_stripos($text, 'ещё'); // 6

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

$text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; echo mb_strrpos($text, 'ещё'); // 46 // Без учета регистра: $text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; echo mb_strirpos($text, 'ещё'); // 46

Найти все вхождения подстроки

$text = 'Съешь ещё - этих мягких французских булок, да ещё выпей же чаю.'; $offset = 0; $allpos = array(); while (($pos = mb_strpos($text, 'ещё', $offset)) !== false) < $offset = $pos + 1; $allpos[] = $pos; >print_r($allpos); // Array ([0] => 6 [1] => 46)

Извлечение из текста

Начало строки

Получить первый символ:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_substr($text, 0, 1); // С

Получить три первых символа:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_substr($text, 0, 3); // Съе

Получить первое слово:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_strstr($text, ' ', true); // Съешь

Получить все после первого слова:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_strstr($text, ' ', false); // ещё - этих мягких французских булок, да выпей же чаю.

Конец строки

Получить последний символ:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_substr($text, -1, 1); // .

Получить три последних символа:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_substr($text, -1, 3); // аю.

Получить последнее слово:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $array = explode(' ', $text); echo end($array); // чаю.

Получить всё до последнего слова:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = mb_substr($text, 0, mb_strrpos($text, ' ')); echo $str; // Съешь ещё - этих мягких французских булок, да выпей же

Середина строки

Получить второе слово:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $array = explode(' ', $text); echo $array[1]; // ещё

Получить текст до дефиса:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; echo mb_substr($text, 0, mb_strpos($text, ' - ')); // Съешь ещё

Получить текст после дефиса:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $str = mb_substr($text, mb_strpos($text, ' - ') + mb_strlen(' - '), -1); echo $str; // этих мягких французских булок, да выпей же чаю

Переносы строк

Получить первую строку:

$text = 'Разнообразный опыт укрепление и развитие структуры требуют определения направлений прогрессивного развития! Не следует забывать, что постоянный рост и сфера активности в степени обуславливает создание системы обучения кадров? С другой стороны дальнейшее развитие различных форм влечет за собой процесс внедрения и модернизации.'; $pos = mb_strpos($text, "\n"); $str = trim(mb_substr($text, 0, $pos)); echo $str; // Разнообразный опыт укрепление и развитие структуры требуют // или $lines = explode("\n", $text); echo $lines[0]; // Разнообразный опыт укрепление и развитие структуры требуют 

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

$text = 'Разнообразный опыт укрепление и развитие структуры требуют определения направлений прогрессивного развития! Не следует забывать, что постоянный рост и сфера активности в степени обуславливает создание системы обучения кадров? С другой стороны дальнейшее развитие различных форм влечет за собой процесс внедрения и модернизации.'; $pos = mb_strrpos($text, "\n"); $str = trim(mb_substr($text, $pos)); echo $str; // форм влечет за собой процесс внедрения и модернизации. // или $lines = explode("\n", $text); echo end($lines); // форм влечет за собой процесс внедрения и модернизации. 

Пилучить символы из ковычек и скобок

$text = '\'Съешь\' "ещё" «этих» [мягких] (французских) '; // '. ' preg_match_all("/\'(.+?)\'/", $text, $matches); echo $matches[1][0]; // Съешь // ". " preg_match_all("/\"(.+?)\"/", $text, $matches); echo $matches[1][0]; // ещё // «. » preg_match_all("/«(.+?)»/", $text, $matches); echo $matches[1][0]; // этих // [. ] preg_match_all("/\[(.+?)\]/", $text, $matches); echo $matches[1][0]; // мягких // (. ) preg_match_all("/\((.+?)\)/", $text, $matches); echo $matches[1][0]; // французских // preg_match_all("/\<(.+?)\>/", $text, $matches); echo $matches[1][0]; // булок // preg_match_all("/<(.+?)>/", $text, $matches); echo $matches[1][0]; // да

Замена в строках

Функция substr_replace($search, $replace, $subject, $count) – заменяет часть строки, также не раотает с кирилицей в кодировке UTF-8, в библиатеке mb_string её нет, поэтому приходится использовать пользовольскую функцию:

if (!function_exists('mb_substr_replace')) < function mb_substr_replace($original, $replacement, $position, $length) < $startString = mb_substr($original, 0, $position, 'UTF-8'); $endString = mb_substr($original, $position + $length, mb_strlen($original), 'UTF-8'); $out = $startString . $replacement . $endString; return $out; >>

Заменить первый символ:

$text = 'Съешь ещё - этих мягких французских булок.'; echo mb_substr_replace($text, '!', 0, 1); // !ъешь ещё - этих мягких французских булок.

Заменить три первых символа:

$text = 'Съешь ещё - этих мягких французских булок.'; echo mb_substr_replace($text, '. ', 0, 3); // . шь ещё - этих мягких французских булок.

Заменить последний символ:

$text = 'Съешь ещё - этих мягких французских булок.'; echo mb_substr_replace($text, '!', -1, 0); // Съешь ещё - этих мягких французских булок!

Заменить три последних символа:

$text = 'Съешь ещё - этих мягких французских булок.'; echo mb_substr_replace($text, '. ', -3, 0); // Съешь ещё - этих мягких французских бул. 

Замена символов и слов в строке

Для этой задачи подходит функция str_replace($search, $replace, $subject), которая работает со всеми кодировками.

Заменить пробелы:

$text = 'Съешь ещё - этих мягких французских булок.'; echo str_replace(' ', '-', $text); // Съешь-ещё---этих-мягких-французских-булок.

Заменить слово:

$text = 'Съешь ещё - этих мягких французских булок.'; echo str_replace('мягких', 'твердых', $text); // Съешь ещё - этих твердых французских булок.

Заменить всё до дефиса:

$text = 'Съешь ещё - этих мягких французских булок.'; $str = 'Не ешь' . mb_substr($text, mb_strpos($text, ' - '), -1); echo $str; // Не ешь - этих мягких французских булок

Заменить всё после дефиса:

$text = 'Съешь ещё - этих мягких французских булок.'; $str = mb_substr($text, 0, mb_strpos($text, ' - ') + 3) . 'печенек'; echo $str; // Съешь ещё - печенек

Добавление в строки

Добавить строку после 10-го символа:

$text = 'Съешь ещё - этих мягких французских булок.'; $str = mb_substr_replace($text, '. ', 10, 0); echo $str; // Съешь ещё . - этих мягких французских булок.

Добавить перед словом:

$text = 'Съешь ещё - этих мягких французских булок.'; $str = str_replace(' ещё ', ' же ещё ', $text); echo $str; // Съешь же ещё - этих мягких французских булок.

Добавить после слова:

$text = 'Съешь ещё - этих мягких французских булок.'; $str = str_replace(' ещё ', ' ещё немного ', $text); echo $str; // Съешь ещё немного - этих мягких французских булок.

Вставить строку между всех символов

Для того чтобы вставить символ между всех символов в строке понадобится функция str_split($string) для пробразавания строки в массив, она также не работает с кирилицей. С версии PHP 7.4 появилась функция mb_str_split() , для более ранних версий:

if (!function_exists('mb_str_split')) < function mb_str_split($str, $l = 0) < if ($l >0) < $ret = array(); $len = mb_strlen($str, "UTF-8"); for ($i = 0; $i < $len; $i += $l) < $ret[] = mb_substr($str, $i, $l, "UTF-8"); >return $ret; > return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY); > >
$text = 'Съешь ещё - этих мягких французских булок.'; $array = mb_str_split($text);; $new = implode(' ', $array); echo $new; // С ъ е ш ь е щ ё - э т и х м я г к и х ф р а н ц у з с к и х б у л о к .

Дописать строку до нужной длины

Функция str_pad($string, $length, $pad_string, $pad_type) дополняет строку другой строкой до заданной длины.

if (!function_exists('mb_str_pad')) < function mb_str_pad($input, $pad_length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT) < $diff = strlen($input) - mb_strlen($input); return str_pad($input, $pad_length + $diff, $pad_string, $pad_type); >>

Дописать стркуку слева:

$text = 'Привет Мир'; echo mb_str_pad($text, 20, '-', STR_PAD_LEFT); // ----------Привет Мир

Дописать строку справа:

$text = 'Привет Мир'; echo mb_str_pad($text, 20, '-', STR_PAD_RIGHT); // Привет Мир----------

Дописать строку с обеих сторон:

$text = 'Привет Мир'; echo mb_str_pad($text, 20, '-', STR_PAD_BOTH); // -----Привет Мир-----

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

Удаление в начале строки

Удалить первый символ:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, 1); echo $new; // ъешь ещё - этих мягких французских булок, да выпей же чаю.

Удалить первые 3 символа:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, 3); echo $new; // шь ещё - этих мягких французских булок, да выпей же чаю.

Удалить первое слово:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, mb_strpos($text, ' ')); echo $new; // ещё - этих мягких французских булок, да выпей же чаю.

Удаление в конце строки

Удалить последний символ:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, 0, -1); echo $new; // Съешь ещё - этих мягких французских булок, да выпей же чаю

Удалить три последних символа:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, 0, -3); echo $new; // Съешь ещё - этих мягких французских булок, да выпей же ч

Удалить последнее слово:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = mb_substr($text, 0, mb_strrpos($text, ' ')); echo $new; // Съешь ещё - этих мягких французских булок, да выпей же

Удаление подсторк

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = str_replace(' мягких', '', $text); echo $new; // Съешь ещё - этих французских булок, да выпей же чаю.

Удалить всё перед сиволом:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = strstr($text, '-'); echo $new; // - этих мягких французских булок, да выпей же чаю.

Удалить всё после сивола:

$text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; $new = strstr($text, '-', true); echo $new; // Съешь ещё // Второй вариант: $pos = mb_strpos($text, '-'); $new = mb_substr($text, 0, $pos + 1); echo $new; // Съешь ещё -

Источник

Читайте также:  Друзья для майнкрафт java
Оцените статью