Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 23

Как найти фрагмент текста в переменной по маске

10.07.2018, 12:20. Показов 1463. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!

Я не очень понимаю, возможна ли реализация и как, поиска куска текста по маске из переменной. То есть есть переменная "$text", и в ней есть некий текст, в котором есть фрагмент, который нужно найти, и вынести в отдельную переменную, фрагмент выглядит как "XXX-XXX-XXX", вместо X могут быть любые цифры и буквы латинского алфавита, между искомым фрагментом и другими словами пробелы могут как присутствовать, так и отсутствовать.

Просьба подсказать, как это сделать, если будет пример кода, буду премного благодарен...

Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2018, 12:20
Ответы с готовыми решениями:

Как сместить фрагмент текста в строке
Всем доброго дня! Есть заголовок такого вида <h2>Заголовок</h2> Надо добавить к нему комментарий так, чтобы этот комментарий...

Как перенести фрагмент текста из Word в Excel?
Уважаемые форумчане, пошлите в нужную сторону... :( После многих мытарств пришел к выводу, что VBA-word и VBA-excel не совсем одно и то...

Как сделать выделенный фрагмент текста заглавными буквами и наоборот
вчера мне задали вопрос относительно редактирования текста в Ворде - Как сделать выделенный фрагмент текста заглавными буквами и наоборот?...

5
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.07.2018, 12:24
https://secure.php.net/manual/ru/book.pcre.php
0
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 23
10.07.2018, 12:36  [ТС]
Там нужен конкретный фрагмент, по которому будет поиск, а этих "фрагментов" может быть 576 штук, и что, каждый проверять?

Добавлено через 8 минут
Мне конкретные фрагменты, которые надо искать, не известны, есть только маска "XXX-XXX-XXX", нужно найти все, что этой маске соответствует, при этом вместо X могут быть любые цифры и буквы латинского алфавита, то есть по некому шаблону "XXX-XXX-XXX", из строки, где есть два совпадения, должно выдать, например "X2A-YCB-A345" и "H24-C83-U28", как такое сделать, и возможно ли это?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.07.2018, 12:39
Цитата Сообщение от Tascherman Посмотреть сообщение
как такое сделать, и возможно ли это?
Я специально оставил ссылку на документацию именно того раздела php, который предназначен для таких задач
0
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 23
10.07.2018, 12:51  [ТС]
Там поиск по определенным регулярным выражениям, у меня НЕТ определенных регулярных выражений, у меня есть маска XXX-XXX-XXX, по которой вместо X может быть любая цифра или буква латинского алфавита, то есть по этой маске должно находить, например, как "X24-576-FUX", так и "276-875-UID", и "YUC-SDK-BG2", возможно ли это?

Потому как если делать поиск по определенному регулярному выражению, то это я знаю, но тогда пропадает вся рациональность, потому как придется предварительно сгенерировать и запихнуть в массив все возможные варианты, которые могут быть по этой маске, но я ищу способ сделать это иначе, и найти по маске "XXX-XXX-XXX", а не по конкретному шаблону/фрагменту, у меня НЕТ КОНКРЕТНОГО шаблона и/или фрагмента...
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.07.2018, 13:02
Цитата Сообщение от Tascherman Посмотреть сообщение
Там поиск по определенным регулярным выражениям, у меня НЕТ определенных регулярных выражений, у меня есть маска XXX-XXX-XXX, по которой вместо X может быть любая цифра или буква латинского алфавита, то есть по этой маске должно находить, например, как "X24-576-FUX", так и "276-875-UID", и "YUC-SDK-BG2", возможно ли это?
Можно написать сервис, который будет преобразовывать такие строки к регулярному выражению. Т.е несколько подряд XXXX станет [A-Z0-9]{4}, - не изменяется

Добавлено через 7 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
$result = preg_replace_callback(
    '/X+/',
    function (array $matches): string {
        $num = mb_strlen($matches[0]);
 
        return "[A-Z0-9]{{$num}}";
    },
    'XXX-X-XXXX'
);
 
var_dump("/$result/");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2018, 13:02
Помогаю со студенческими работами здесь

Как узнать - поместиться ли фрагмент текста целиком на остатке страницы?
Добрый день! Скрипт VBA копирует из разных вордовских документов куски содержимого в текущий открытый документ. В принципе, все...

Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста
Дана строка. Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.

Строка: Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.
Дана строка. Разработать программу, которая вставляет фрагмент текста после указанного фрагмента текста.

Проверка переменной по маске
Есть переменная str. Как проверить соответствует ли она маске 0000:00:00??? Если да, то дальше идет код...

проверка значения переменной по маске
всем привет. понадобилось проверять значение переменной по маске. набросал код: $r = 'd:к'; $mask = "X:X"; if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru