Как выбрать между взрывом и регулярным выражением - PullRequest
3 голосов
/ 11 марта 2012

Моя строка должна содержать несколько «горячих клавиш» вида [hotkey]. Например:

"This is a sample string [red] [h1]"

Когда я обрабатываю эту строку с помощью функции php, я бы хотел, чтобы функция выводила исходную строку следующим образом;

<font color='red'><h1>This is a sample string</h1></font>

Я бы хотел использовать эту функцию исключительно для удобства, чтобы упростить ввод текста. Я могу использовать тег шрифта или div или что-то еще, давайте не будем вдаваться в это. Дело в этом; горячая клавиша приведет к переносу оригинальной строки в

<something here>original string<and something there>

Таким образом, функция сначала должна определить, есть ли горячие клавиши или нет. Это легко; просто проверьте, существует ли [

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

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

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

шаг 1 разбить строку в массив, используя [ delimiter

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

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

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

Я плохо говорю по-английски, но я видел ваш пример:

"This is a sample string [red] [h1]"

<font color='red'><h1>This is a sample string</h1></font>

На вашем месте:

$red = substr( $chaine, strpos($chaine, '['), strpos($chaine, ']') );
0 голосов
/ 11 марта 2012

Если [ и ] - единственные разделители, о которых вам нужно беспокоиться, вы, вероятно, можете использовать strtok

...