обо всем по порядку. Я знаю, как анализировать XML / HTML с помощью simplexml, и я знаю все аргументы против использования RegEx для его анализа. Этот вопрос ради знаний.
Что должно произойти
В блоке текста, скажем, у нас есть следующая строка текста:
The query you need to use is
<code>SELECT `post_name` FROM table WHERE id= $id</code>
where `$id` is the `user_ID` we got earlier.
Как вы подходите к следующему:
`$id`
`user_ID`
без совпадения
`post_name`?
Требования
Это должно быть решение только для регулярных выражений. Я понимаю и знаю, как использовать такие вещи, как preg_replace_callback
и т. Д., Чтобы сначала удалить блоки <code>
из строки, но я ищу решение только для регулярных выражений. Кроме того, он должен иметь возможность обрабатывать возможные атрибуты, такие как <code lang="php">
.
Регулярное выражение должно соответствовать парам обратных галочек, которые не находятся между <code>
и
, и совпадения могут не содержать <code>
или
для обработки одиночных спинок в других контекстах.
Содержимое в обратных чертах никогда не будет многострочным.
Рассуждения
Я работаю над личным проектом, где это был возможный крайний случай. Это не проект с уценкой, в котором можно изменить порядок вызовов. Теги <code>
находятся в исходном тексте и никуда не денутся.
Кроме того, одна из причин, по которой я не хочу отвечать «use simpleXML», заключается в том, что обратные галочки не находятся внутри реальных <code>
блоков. Это просто удобный способ объяснить проблему, и решение для блоков <code>
будет работать с небольшими изменениями.