Получить строку, соответствующую символу подстановки в PHP - PullRequest
1 голос
/ 11 ноября 2009

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

Например:

  • Аргумент 1: «Это * строка, которую я* "
  • Аргумент 2:" Это моя потрясающая строка, которую я создал сам "
  • Return: array (" мой потрясающий "," создал себя ")

Какой самый чистый способ сделать это?Помните, что это не всегда строки английских слов, как в примере, это могут быть любые случайные символы.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2009

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

Поскольку это действительно похоже на домашнюю работу, я также не буду давать какой-либо конкретный код, но я бы хорошо использовал preg_replace (для замены подстановочных знаков эквивалентами регулярных выражений) и preg_match (для построения массива совпадающих подстрок).

2 голосов
/ 11 ноября 2009

Звучит как домашнее задание. Вот краткий обзор без какого-либо фактического кода:

Маркируйте шаблон в строки и подстановочные знаки. Перебирайте токены; каждый раз, когда целевая строка начинается с обычного (строкового, не подстановочного) токена, обрежьте эту строку. Каждый раз, когда вы сталкиваетесь с токеном подстановочного знака, находите индекс следующего токена в строке и обрезайте до этого индекса. Сохраните это. Если в любое время совпадения нет, верните false. Если вы встретите конец строки до завершения шаблона, верните false. Если последний токен является подстановочным знаком, сохраните оставшуюся часть строки.

...