Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обратный поиск по регулярным выражениям


Автор: littlemook 24.8.2010, 20:36
Доброго времени суток.
Возникла такая задача. Есть текст, есть регулярное выражение, по которому его нужно преобразовывать, все проходит гладко при помощи preg_replace(). Но теперь надо восстановить исходный текст, имея только регулярку и шаблоне преобразования. Для ясности на примере:

Код

<?php
$pattern = "#\{b\}(.*)\{/b\}#iU" ;
$replacement = "<b>$1</b>" ;
$text = "{b}Жирный{/b} текст" ;
$bbtext = preg_replace($pattern, $replacement, $text) ; // => $bbtext === '<b>Жирный</b> текст'


И мне надо, имея только $pattern, $replacement и $bbtext получить исходный $text.
Это вообще посильная задача?
Разумеется, нужно не решение типа
Код

<?php
$pattern = "#\{b\}(.*)\{/b\}#iU" ;
$replacement = "<b>$1</b>" ;
$text = "{b}Жирный{/b} текст" ;
$bbtext = preg_replace($pattern, $replacement, $text) ; // => $bbtext === '<b>Жирный</b> текст'

$back_pattern = "#\<b\>(.*)\</b\>#iU" ;
$back_replacement = "{b}$1{/b}" ;
$text_again = preg_replace($back_pattern, $back_replacement, $bbtext) ; // => $text_again === '{b}Жирный{/b} текст'

а более универсальное решение, чтобы можно было восстановить любой исходный текст, при этом, повторюсь, оперируя только исходным $pattern, $replacement и $bbtext, само собой, никаких других паттернов создавать нельзя (только на основе данных, если потребуется)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)