Я смешал html, пользовательский код и обычный текст, который мне нужно проверять и часто менять на нескольких длинных вики-страницах. Я работаю с проприетарным вики-подобным приложением и не могу контролировать, как приложение функционирует или проверяет пользовательский ввод. Макет страниц, добавляемых пользователями, должен соответствовать очень специфическому стандартному макету и всегда включать очень специфический текст только в определенных местах - стандарт, который часто меняется. Если пользователи добавляют страницы, которые пока не соответствуют стандарту, они будут удалены.
У меня нет ресурсов, чтобы вручную вычитать и исправить все эти страницы, поэтому автоматизация - единственное решение. Тот факт, что все это, очевидно, является пустой тратой времени, когда существуют альтернативные платформы для выполнения именно того, что здесь необходимо, * уже понятно.
Я создал API на основе PHP для автоматизации этого процесса пост-проверки и частой повторной стандартизации. Я смог настроить шаблоны регулярных выражений для обработки всего этого смешанного текста, и все они отлично работают для обработки отдельных строк. Проблема у меня заключается в следующем: неправильно сформированное регулярное выражение для длинного текста с разрывами строк может привести к неожиданным результатам, таким как сброс соединения. У меня нет доступа к журналам на стороне сервера для устранения неполадок. Как мне это преодолеть?
Это всего лишь один пример того, что у меня сейчас есть: теги {column} и {section}, которые я ищу ниже, могут иметь любое количество атрибутов и переносить любой текст. {section} может существовать, а может и не существовать и может содержать или не содержать одну или несколько строк в {column}, но он должен быть заключен в {column}. Сам по себе {column} может существовать или не существовать, и если его нет, мне все равно, так как позже в сценарий будет вставлен некоторый текст по умолчанию. Я хочу взять содержимое внутреннего раздела и вместо этого обернуть его в тег html div. Я не могу вспомнить точную схему, которую я сейчас использую, но она достаточно близка ...
$pattern = "/\{column:id=summary([|]?([a-zA-Z0-9-_ ]+[:][a-zA-Z0-9-_ ]+[ ]?))\}(.*)({section([|]([a-zA-Z0-9-_ ]+[:][a-zA-Z0-9-_ ]+[ ]?))\}(.*)\{section\}(.*))?{column\}/s";
$replacement = "{html}<div id='summary'>$7</div>{html}";
$text = preg_replace($pattern, $replacement, $subject);
Обработка атрибутов {column} и {section} и передача только допустимых параметров HTML в новый html div или его подтекст само по себе является проблемой, но мой основной фокус выше - получение этого значения (. *) Внутри {раздел} выше без сброса соединения. Есть указатели?